簡體   English   中英

setVisibility在DrawerNavigation中不起作用

[英]setVisibility is not working in DrawerNavigation

我在抽屜中使用了NavigationView ,並且Menu中有一個項目具有app:actionLayout屬性,該屬性指向包含TextViewLinearLayout ,而TextView具有android:visibility="invisible"屬性。 我想這個textview上點擊時可見itemMenu 但它不起作用,我添加了一個Toast來檢查單擊偵聽器是否正常工作,並發現單擊偵聽器正在工作,但是textView不可見。

在此處輸入圖片說明

這是單擊偵聽器(活動布局名稱為: main_activity.xml ):

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()){
                    case R.id.nav_kitchen_key:
                        View kitchenKeyLayout = getLayoutInflater().inflate(R.layout.nav_kitchen_key, null);
                        TextView kitchenKeyTextView = (TextView)kitchenKeyLayout.findViewById(R.id.show_kitchen_key);
                        kitchenKeyTextView.setVisibility(View.VISIBLE);
                        break;
                }
                return true;
            }
        });

這是Menu item

<item
    android:id="@+id/nav_kitchen_key"
    android:title="Kitchen Key"
    android:icon="@drawable/if_key"
    app:actionLayout="@layout/nav_kitchen_key" />

菜單項app:actionLayout的屬性直接指向nav_kitchen_key.xml ,這里是nav_kitchen_key.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/show_kitchen_key"
            android:textColor="@color/white"
            android:text="2592"
            android:visibility="invisible"
            android:background="@drawable/kitchen_key_background"/>

</LinearLayout>

您不應該創建新的View,而應該從MenuItem, MenuItem.getActionView()

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()){
                    case R.id.nav_kitchen_key:
                        LinearLayout kitchenKeyLayout = (LinearLayout) item.getActionView();

                        TextView kitchenKeyTextView = (TextView)kitchenKeyLayout.findViewById(R.id.show_kitchen_key);
                        kitchenKeyTextView.setVisibility(View.VISIBLE);
                        break;
                }
                return true;
            }
        });

您從getActionView獲得視圖

LinearLayout kitchenKeyLayout = (LinearLayout) item.getActionView();
    // This returns the container layout  

TextView kitchenKeyTextView = (TextView)kitchenKeyLayout.findViewById(R.id.show_kitchen_key);
                            kitchenKeyTextView.setVisibility(View.VISIBLE);

kitchenKeyTextView.setVisibility(View.VISIBLE);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM