gpt4 book ai didi

android - ActionView 设置为支持 NavigationView 不显示的项目

转载 作者:搜寻专家 更新时间:2023-11-01 08:38:04 26 4
gpt4 key购买 nike

我在抽屉导航中使用支持的 NavigationView 来显示项目菜单。

<android.support.design.widget.NavigationView
android:id="@+id/drawer_navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@drawable/drawable_background"
app:headerLayout="@layout/drawer_header"
app:itemBackground="@drawable/drawer_item_background"
app:itemIconTint="@color/drawer_item"
app:itemTextColor="@color/drawer_item"
app:menu="@menu/drawer"
app:theme="@style/Text.DrawerItem"/>

我想在菜单项旁边显示连接请求计数器。

我试过像这样在 XML 菜单定义中设置 actionLayout

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<group android:checkableBehavior="single">
...
<item
android:id="@+id/navigation_requests"
android:icon="@drawable/ic_swap_horiz_24dp"
android:title="@string/connect_menu_connection_requests"
app:actionLayout="@layout/connection_request_counter"
app:showAsAction="always"/>
...
</group>
</menu>

ActionView connection_request_counter.xml 的布局

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:textColor="@color/brand_blue"
android:text="5"/>

但此时我看不到项目旁边的数字 5。

我也尝试以编程方式设置 ActionLayout:

MenuItemCompat.setActionView(mMenu.findItem(R.id.navigation_requests), R.layout.connection_request_counter);

但仍然没有运气。

我可以像这样获取对 TextView 的引用

final TextView connectionRequestCounterView
= (TextView) MenuItemCompat.getActionView(mMenu.findItem(R.id.navigation_requests));

它实际上返回一个 TextView 实例,但即使我为它设置了文本,我也看不到布局中的任何内容。这可能与我正在设计菜单项的样式有关吗? (我设置了菜单项的文本颜色、色调和背景)

这是我的风格:

<style name="Text.DrawerItem">
<item name="android:textColor">@color/text_color_dark_grey</item>
<item name="android:textSize">@dimen/text_size_default</item>
<item name="android:clickable">false</item>
<item name="android:textColorLink">@color/text_color_dark_grey</item>
<item name="fontPath">@string/font_aller_light</item>
<!--<item name="android:background">@color/background_activity_default</item>-->
<!--<item name="background">@color/background_activity_default</item>-->
</style>

drawer_item_background.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--To override the default grey background for selected item-->
<item android:drawable="@android:color/transparent" android:state_checked="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>

drawer_drawablbe.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item>
<shape android:shape="rectangle">
<solid android:color="@color/background_activity_default"/>
</shape>
</item>
<item
android:bottom="24dp"
android:left="16dp">
<bitmap
android:gravity="left|bottom"
android:src="@drawable/my_drawer_logo"/>
</item>

</layer-list>

其中 @drawable/my_drawer_logo 是不同密度的 PNG。

为什么我看不到操作 View 还有其他想法吗?

最佳答案

我可以很容易地更改计数器的文本。但是,我使用的 TextView 在 LinearLayout 中,并且它也有一个 android:id(我在没有 LinearLayout 的情况下尝试过没有问题):

 <?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">
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textCounter"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:textColor="@color/colorPrimary"
android:text="5"/>
</LinearLayout>

鉴于此,我可以使用以下方法查看、访问和修改主 Activity 中的 TextView :

TextView countText = (TextView)findViewById(R.id.textCounter);

countText.setText("6");

当然,我正在使用一种简单的方法来计算该值,只是将其设置为值“6”,但是,我不知道您的计数器结构实际上是什么样的,这些不是主要关注点你的问题。

您能否查看柜台号码的问题仍然是个谜。看看我上面的问题,我们也会敲定这个要素。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}

关于android - ActionView 设置为支持 NavigationView 不显示的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35047941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com