2016-05-19 7 views
0

私のプロジェクトでは、フラグメントを使ってアンドロイドv7.toolbarを使用したいと思います。だから私は私の主な活動のXMLで以下のような何かをしました。すべてのフラグメントxmlをandroid.support.v7.widget.Toolbarに追加したくないので、アンドロイドツールバーをプログラムでカスタマイズする

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

    <android.support.v7.widget.Toolbar 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:id="@+id/toolBar" /> 

    <FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/fragment_container"> 
    </FrameLayout> 

</LinearLayout> 

私はプログラムでフラグメントを追加しています。いくつかの断片では、私はツールバーの右側を変更する必要があります。例えば、いくつかのフラグメントでは、ちょうど1つの右メニューアイコンと別のフラグメント2を使用する必要があります。私はそれをどのように達成できますか?

また、フラグメントからツールバーの右側にあるアイコンリソースを変更する方法はありますか?あなたはmenu.xmlを作成し、そこにすべてのメニュー項目を置くことができる

答えて

2

おかげで、。すべての項目をvisibilityに設定してfalseに設定します。これはすべてを隠す。

フラグメントのonCreatesetHasOptionsMenu(true)に設定すると、onCreateOptionsMenu(Menu m, MenuInflater inflater)を上書きすることができます。

この方法では、menu.findItem(id.of.item).setVisible(true/false)を使用できます。

例:

menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    tools:context="com.sample.app.MainActivity">  
    <item 
     android:id="@+id/action_refresh" 
     android:icon="@drawable/ic_action_refresh" 
     android:orderInCategory="101" 
     app:showAsAction="ifRoom" 
     android:title="@string/action_refresh" 
     android:visible="false"/> 
    <item 
     android:id="@+id/action_edit_account" 
     android:icon="@drawable/ic_action_edit" 
     android:orderInCategory="102" 
     app:showAsAction="never" 
     android:title="@string/action_edit_account" 
     android:visible="false"/> 
    <item 
     android:id="@+id/action_enable_offline_token" 
     android:orderInCategory="105" 
     app:showAsAction="never" 
     android:title="@string/action_enable_offline_token" 
     android:visible="false"/> 
    <item 
     android:id="@+id/action_disable_offline_token" 
     android:orderInCategory="105" 
     app:showAsAction="never" 
     android:title="@string/action_disable_offline_token" 
     android:visible="false"/> 
    <item 
     android:id="@+id/action_save" 
     android:icon="@drawable/ic_action_save" 
     android:orderInCategory="106" 
     app:showAsAction="ifRoom" 
     android:title="@string/action_save" 
     android:visible="false"/> 
</menu> 

フラグメント:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setHasOptionsMenu(true);    
    } 

    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 
    { 
     super.onCreateOptionsMenu(menu, inflater);   
     menu.findItem(R.id.action_refresh).setVisible(false); 
     menu.findItem(R.id.action_save).setVisible(true); 
    } 

は、あなただけのメニューを得ることができるアイコンを変更し、FindItem関数とsetIconすることができません。

+0

ありがとうございます。 v7.toolbarにテキストを中央に配置する方法も知っていますか? @ChoklatStu –

+0

[センタリング用のテキストをチェックする](http://stackoverflow.com/questions/26533510/android-toolbar-center-title-and-custom-font) – ChoklatStu

関連する問題