0

ナビゲーションビューを実装しており、ヘッダービューがあり、画像ビューを動的に非表示にする方法があります

以下は私のコードです

<android.support.design.widget.NavigationView
    android:id="@+id/navigation_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/drawer_header"
    app:menu="@menu/drawer" />

drawer_header.xml

<?xml version="1.0" encoding="utf-8"?>

<ImageView
    android:id="@+id/drawer_logo_icon"
    android:layout_width="150dp"
    android:layout_height="0px"
    android:layout_gravity="center"
    android:layout_marginTop="10dp"
    android:layout_weight="2"
    android:background="@drawable/logo_white" />

<TextView
    android:id="@+id/drawer_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

<TextView
    android:id="@+id/drawer_phone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/drawer_header_text"
    android:textAppearance="@style/TextAppearance.AppCompat.Body1"
    android:visibility="invisible" />

メニュー項目を取得するには、navigationview.getmenuID() を使用できます。しかし、ヘッダーレイアウト画像をプログラムで非表示にする方法

4

1 に答える 1

1

あなたのルートレイアウトにIDを割り当てますdrawer_header.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_header_layout"
    android:layout_width="match_parent"
    .............

次に、コードで参照を取得して非表示にします。

RelativeLayout drawerHeaderLayout = (RelativeLayout) findViewById(R.id.drawer_header_layout);
drawerHeaderLayout.setVisibility(View.GONE);

これにより、Navigation View ヘッダーが非表示になります。(私のために働く)

編集:(より良い方法)

ヘッダーを完全に削除する別の方法はremoveHeaderView です

 NavigationView view = (NavigationView) findViewById(R.id.navigation_view);
 view.removeHeaderView(drawerHeaderLayout);
于 2015-10-15T19:32:26.903 に答える