2
ご存じのように、アンドロイドスタジオには、ナビゲーションドローバーアクティビティがあり、レイアウトフォルダ内に複数のレイアウトを作成します。ナビゲーション・ドロワーのヘッダー・レイアウトの背景色を動的に変更するにはどうすればいいですか?
nav_header_main.xml
NavigationViewヘッダの成分を含有するレイアウトです。私は、上の写真でそれを強調しているし、それは次のコードを持っています
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/sideNavLayout"
android:layout_width="match_parent"
android:layout_height="@dimen/nav_header_height"
android:background="@drawable/side_nav_bar"
android:gravity="bottom"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:src="@android:drawable/sym_def_app_icon" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="Android Studio"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="[email protected]" />
</LinearLayout>
私はそうのようMainActivity.java
から上記写真のハイライト部の背景を変更したい:
LinearLayout sideNavLayout;
sideNavLayout = (LinearLayout) findViewById(R.id.sideNavLayout);
sideNavLayout.setBackgroundResource(R.drawable.my_side_nav_bar);
しかし、私はそれを使用したところどこでエラーが発生するのですか?
java.lang.NullPointerException
この点についてお手伝いできますか?
おかげで多くのことをアクセスするためにnavviewヘッダーレイアウトを膨らませる必要があります。私は助けに感謝します。残念ながら私は2つのヘッダーを上下に1つずつ取得しています。また、3行目の変数ビューは使用されません。 – Darush
必要なヘッダーの下にある最初のヘッダーを削除するにはどうすればよいですか? – Darush
しかし、それらはすべて1つのnavview権限で実装されていますか?だからあなたはこのようにしなければなりません。 3番目のパラメータを削除して修正します。私は私の答えを編集 – uguboz