3

だから、私はナビゲーションビューで活動をしています。そのアイテムをクリックすると、アクティビティのフラグメントが変更されます。すべてのフラグメントには同じツールバーがあります。しかし、このツールバーと TabLayout があります。このようなアクティビティで一度ツールバーを宣言する方が良いことを知りたい

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include layout="@layout/toolbar" />

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/toolbar" />

</RelativeLayout>

または各フラグメントで宣言します。

最初の方法の欠点は、既定のツールバーの影です。フラグメントにタブを追加すると、影は次のようになります

ここに画像の説明を入力

2つの解決策を試したとき。私のツールバーはすべて、引き出しのアニメーションロゴの代わりに戻るアイコンが付いていました。

ありがとう。

4

2 に答える 2

4

私はまったく同じ問題を抱えていました。これが私がそれを解決した方法です:

  • 提案したように、ツールバーをフラグメントに移動します(2つを分離する影がないようにします)。これにより、レイアウトに (異なる) ツールバーを実装するためのより柔軟な方法も可能になります。
  • ツールバーのナビゲーション アイコンを次のようなカスタム アイコンに置き換えます。

    toolbar.setNavigationIcon(R.drawable.ic_action_menu);
    

(私はAndroid Asset Studioを使用して、好みの色のアイコンを簡単に作成しました)

  • 新しいメニュー(ホーム)アイコンでNavigationViewを開きます。これは、MainActivity (NavigationView を持つもの) を通じて行うことができます。ドロワーを開くそのアクティビティでパブリック メソッドを作成します。

    public void openDrawer(){
        mDrawerLayout.openDrawer(Gravity.LEFT);
    }
    
  • 次のように、フラグメントの OnOptionsItemSelected でこのメソッドを呼び出します。

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // handle item selection
        switch (item.getItemId()) {
            case android.R.id.home: //Menu icon
                ((MainActivity)getActivity()).openDrawer();
                return true;            
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    

それでおしまい。もちろん、欠点は、各フラグメントにツールバーを実装する必要があることです。ただし、これは、Fragment にツールバー (+TabLayout) を配置し、NavigationView を制御できる唯一の方法 (私が知っている) です。

于 2015-10-09T23:46:32.337 に答える
0

次のようなデザイン サポート ライブラリから AppBarLayout を使用できます。

<android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            ...
            app:layout_scrollFlags="scroll|enterAlways" />

        <android.support.design.widget.TabLayout
            ...
            />
    </android.support.design.widget.AppBarLayout>

その後、タブレイアウトの可視性を変更できます。

デザイン レイアウト ライブラリの詳細については、リンクを参照してください。

于 2015-07-23T10:32:16.777 に答える