21

新しいAndroidサポートデザインライブラリからnavigationViewを試しました。動的ヘッダービューが必要です。基本的に、私のヘッダービューには今日の引用のようなものが表示されます。私は約10個の引用を持っており、引用をランダムに選択してheaderViewのテキストビューに表示したいと考えています。また、headerView の onClick メソッドを追加したいと考えています。

現在、ヘッダービューのレイアウトをプログラムで変更する可能性はありません。これを実装するための提案はありますか?

4

8 に答える 8

25

まず、 lay_header.xmlのようなヘッダー XML を作成します

<TextView
    android:id="@+id/tvThought"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

Javaファイルで、TextViewで上記のヘッダーを膨らませます。お気に入り

TextView headerView = (TextView) LayoutInflater.from(this).inflate(R.layout.lay_header, null);
headerView.setText("Your_thoght");

次に、HeaderView として追加します

navView = (NavigationView) findViewById(R.id.navView);
navView.addHeaderView(headerView);

それでおしまい...

于 2015-06-05T06:47:32.160 に答える
15

新しいサポート ライブラリの更新 (23.1.1) の後、

あなたはこれを行うことができます -

NavigationView 内に headerview を追加しapp:headerLayout="@layout/drawer_header"ます。

次に、次の方法でアクセスできます。

View header = navigationView.getHeaderView(0);
TextView text = (TextView) header.findViewById(R.id.textView);

または複数のヘッダーがある場合

navigationView.getHeaderCount()

参考:https ://code.google.com/p/android/issues/detail?id=190226#c31

于 2015-11-29T17:28:03.210 に答える
2

ここに画像の説明を入力

ヘッダーレイアウトを作成し、テキストビューを内部に取り込み、

<TextView
                android:id="@+id/profile_email_text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@id/profile_image"
                android:layout_alignParentBottom="true"
                android:layout_toLeftOf="@id/expand_account_box_indicator"
                android:ellipsize="end"
                android:maxLines="1"
                android:paddingBottom="16dp"
                android:singleLine="true"
                android:clickable="true"
                android:onClick="onSelectText"
                android:text="dhaval0122@gmail.com"
                android:textColor="@color/body_text_2_inverse"
                android:textSize="@dimen/text_size_medium" />

onCreateで、

((TextView) findViewById(R.id.profile_email_text)).setText("test");

onSelectTextアクティビティでメソッドを作成する

public void onSelectText(View v){
        if(v.getId() == R.id.profile_email_text){
            Snackbar
                    .make(fab, "clicked on sub title", Snackbar.LENGTH_LONG)
                            //.setAction(R.string.snackbar_action, myOnClickListener)
                    .show();
            drawer_layout.closeDrawers();
        }
    }
于 2015-06-04T05:01:39.533 に答える
1

addHeaderViewカスタム ヘッダーは、navigationViewを呼び出してプログラムで追加するか、 app:headerLayout="@layout/myheader".

于 2015-06-03T15:30:44.060 に答える
0

まず、navigationView を取得する必要があります。 NavigationView navigationView =(NavigationView)findViewById(R.id.nav_view);

次にヘッダー。 View header = navigationView.getHeaderView(0) 次にテキストビュー。 TextView text = (TextView) header.findViewById(R.id.textView); 最後に、表示するテキストを設定できます。 text.setText("Hello there");

于 2015-12-27T23:48:21.637 に答える