NavigationView
タイトルが示すように、ヘッダー内のビューを制御する方法があるかどうか知りたいですか? (ヘッダーの追加または削除を除く)。
例: ヘッダーには、ユーザーのアバターがあります。デフォルトではゲスト画像が表示されますが、ユーザーがログインすると本物のアバターが表示されます。
これはどのように達成できますか?
NavigationView
タイトルが示すように、ヘッダー内のビューを制御する方法があるかどうか知りたいですか? (ヘッダーの追加または削除を除く)。
例: ヘッダーには、ユーザーのアバターがあります。デフォルトではゲスト画像が表示されますが、ユーザーがログインすると本物のアバターが表示されます。
これはどのように達成できますか?
サポート ライブラリをバージョン 23.1.1 以降に更新した後、
あなたはこれを行うことができます -
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
私は答えとしてコメントを受け入れることができないので。だから、私はMoinkhanの答えをここに再投稿します:
まず、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);
それでおしまい...
また、次の場所でも確認できます: NavigationView のカスタマイズ - 動的 headerView の追加、Android サポート デザイン ライブラリ
どうもありがとう!繰り返しになりますが、ユーザーがコメントを回答として受け入れることができる関数が必要です!
これを行うもう 1 つの方法は、以下のように、NavigationView オブジェクトのメソッド「inflateHeaderView()」を使用することです (「setContentView()」を使用した後)。
View headerLayout = navigationView.inflateHeaderView(R.layout.yours_nav_header_layout);
この後、「headerLayout」を使用して、以下のようにヘッダー レイアウトのカスタム ビューにアクセスできます。
View cutomView = (TextView) headerLayout.findViewById(R.id.lay_sign_in);
私の場合、ButterKnife フレームワークを使用して、View "navigationView" を次のように挿入しています。
@Bind(R.id.nav_view) NavigationView navigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
}