[英]setVisibility is not working in DrawerNavigation
我在抽屜中使用了NavigationView
,並且Menu
中有一個項目具有app:actionLayout
屬性,該屬性指向包含TextView
的LinearLayout
,而TextView
具有android:visibility="invisible"
屬性。 我想這個textview
上點擊時可見item
的Menu
。 但它不起作用,我添加了一個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.