2017-10-02 10 views
0

メニューがActionBarのテキストで表示されているかどうかを(プログラムによって)知る方法はありますか?アクションバーにテキストを表示できる場合のみオーバーフローメニューを表示する方法

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     xmlns:tools="http://schemas.android.com/tools"> 
    <item 
     android:id="@+id/action_cancel" 
     android:orderInCategory="100" 
     android:title="@string/action_cancel" 
     android:icon="@drawable/ic_cancel_24dp" 
     app:showAsAction="always|withText"/> 
    <item 
     android:id="@+id/action_clear" 
     android:orderInCategory="200" 
     android:title="@string/action_clear" 
     android:icon="@drawable/ic_clear_24dp" 
     app:showAsAction="always|withText"/> 
    <item 
     android:id="@+id/action_done" 
     android:orderInCategory="300" 
     android:title="@string/action_done" 
     android:icon="@drawable/ic_done_24dp" 
     app:showAsAction="always|withText"/> 
</menu> 

テキストは、私はメニューがメニュー
として残りたく表示されていない場合、私はifRoom|withTextalways|withTextを置き換えることも試みたが、両方のケースで、私はデバッグのために使用していますデバイスがアイコンのみではなく、表示さテキスト。

答えて

0

私は最後に、アイコン+テキストで項目を配置するカスタムツールバーレイアウトを使用しました。

<TextView 
    android:id="@+id/action_cancel" 
    style="@style/ActionBarItem" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:drawableLeft="@drawable/ic_cancel" 
    android:text="@string/action_cancel"/> 

<TextView 
    android:id="@+id/action_clear" 
    style="@style/ActionBarItem" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:drawableLeft="@drawable/ic_clear" 
    android:text="@string/action_clear"/> 

<TextView 
    android:id="@+id/action_done" 
    style="@style/ActionBarItem" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:drawableLeft="@drawable/ic_done" 
    android:text="@string/action_done"/> 

private void setupActionBar() { 
    MyLog.pe(DEBUG, TAG, "+ setupActionBar()"); 
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 

final ActionBar actionBar = getSupportActionBar(); 
try { 
    assert actionBar != null; 
    actionBar.setDisplayShowTitleEnabled(false); 
    actionBar.setDisplayShowHomeEnabled(false); 
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
    actionBar.setCustomView(R.layout.actionbar_cancel_clear_done); 

    final View customActionBarView = actionBar.getCustomView(); 
    customActionBarView.setLayoutParams(
      new Toolbar.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT, 
        ViewGroup.LayoutParams.MATCH_PARENT)); 
    customActionBarView.findViewById(R.id.action_cancel).setOnClickListener(this); 
    customActionBarView.findViewById(R.id.action_clear).setOnClickListener(this); 
    customActionBarView.findViewById(R.id.action_done).setOnClickListener(this); 
} catch (Exception e) { 
    MyLog.e(DEBUG, TAG, "SupportActionBar is null!"); 
} 


MyLog.px(DEBUG, TAG, "- setupActionBar()"); 

}

関連する問題