Android NavigationView焦點獲取問題,點擊事件無響應 、子佈局item圖標無顏色

先上視圖

  • NavigationView:必須放在所有佈局的最下面纔行
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/color_green6"
    android:orientation="vertical"
    tools:context="com.y.activity.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/color_green4" />
       

    </LinearLayout>

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/show_drawerlayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <LinearLayout style="@style/show_LinearLayout">


                <RelativeLayout
                    style="@style/show_RelativeLayout"
                    android:layout_marginRight="10dp"
                    android:background="@drawable/shape_rectangle_red">
                    <ImageView
                        android:id="@+id/time_iv"
                        style="@style/show_RelativeLayout_iv"
                        android:src="@mipmap/time" />

                    <TextView
                        android:id="@+id/time_tv"
                        style="@style/show_RelativeLayout_tv"
                        android:layout_toRightOf="@+id/time_iv"
                        android:text="工作時長" />

                    <TextView
                        android:id="@+id/time_stat"
                        style="@style/show_RelativeLayout_tvdata"
                        android:layout_below="@+id/time_tv"
                        android:layout_toRightOf="@+id/time_iv"
                        android:text="22.4V" />

                </RelativeLayout>

            </LinearLayout>

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="50dp"
                android:src="@mipmap/chars" />

        </LinearLayout>

        
    <!--側滑欄 菜單-->
    <android.support.design.widget.NavigationView
        android:id="@+id/navigationview"
        android:layout_width="280dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@drawable/slide_menu_item_yan"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/activity_main_head"
        app:menu="@menu/menu_drawerlayout">

    </android.support.design.widget.NavigationView>

    </android.support.v4.widget.DrawerLayout>
</LinearLayout>
  • 頭佈局:app:headerLayout="@layout/activity_main_head"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/head_person"
        android:background="@drawable/shape_oval"
        android:layout_width="64dp"
        android:layout_height="64dp"
        android:layout_marginTop="42dp"
        android:src="@drawable/slide_head_person"
        android:contentDescription="TODO" />

    <TextView
        android:id="@+id/head_nickname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="七月"
        android:textColor="#ffffff"
        android:textSize="18sp" />
    <!--android:cursorVisible="false" 不顯示光標-->
    <EditText
        android:id="@+id/head_signature"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="18dp"
        android:hint="總有人正年輕"
        android:cursorVisible="false"
        android:theme="@style/EditTextUnderline"
        android:textColor="#ffffff"
        android:textSize="16sp"/>

</LinearLayout>
  • 子佈局 :app:menu="@menu/menu_drawerlayout
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/slide_emil"
            android:icon="@mipmap/emil"
            android:title="郵箱" />
        <item
            android:id="@+id/slide_db"
            android:icon="@drawable/slide_menu_item_daiban"
            android:title="待辦" />
        <item
            android:id="@+id/slide_rc"
            android:icon="@drawable/slide_menu_item_richeng"
            android:title="日程" />
        <item
            android:id="@+id/slide_sc"
            android:icon="@drawable/slide_menu_item_shoucang"
            android:title="收藏" />
    </group>


    <item android:title="其他">
        <menu>
            <item
                android:id="@+id/slide_set"
                android:icon="@drawable/slide_set"
                android:title="設置" />
            <item
                android:id="@+id/slide_about"
                android:icon="@drawable/slide_about"
                android:title="關於我們" />
            <item
                android:id="@+id/slide_exit"
                android:icon="@drawable/slide_exit"
                android:title="退出登錄" />
        </menu>
    </item>
</menu>

 

  • NavigationView:頭佈局,及子佈局的item對象獲取
//      --------- NavigationView 側滑欄 頭佈局 控件對象獲取 ----
        mNavigationView = findViewById(R.id.navigationview);          //側滑欄
        View headerView = mNavigationView.getHeaderView(0);      //獲取NavigationView側滑欄的頭佈局
        mHeadPerson = headerView.findViewById(R.id.head_person);
//      ----- 其他 子佈局 設置 ---------
        Menu mNavigationViewMenu = mNavigationView.getMenu();              //獲取 NavigationView 的子佈局item 對象
        mNavigationView.setItemIconTintList(null);                                        //設置item圖標可以顯示顏色,不再是統一的灰白色
        mEmil = mNavigationViewMenu.findItem(R.id.slide_emil);

  • NavigationView:頭佈局、子佈局item點擊事件

  • 頭佈局點擊事件

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
//         ----------- 側滑欄 頭佈局 控件 ---------
            case R.id.machine_head:                                          //head
                break;

            case R.id.machine_date:                                            //時間
                break;
  
        }
    }
  • 子佈局item點擊事件
   // 側滑欄 slideMenu 滑出 以及menu控件的點擊事件
        mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @RequiresApi(api = Build.VERSION_CODES.O)
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
//                mDrawerLayout.closeDrawer(mNavigationView);         //關閉側滑欄    每次點擊item後關閉 側滑欄
                switch (menuItem.getItemId()) {
                     case R.id.offlinebundle:

                        break;
                }
                return false;
            }
        });

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章