android - 更改另一个布局文件的 TextView
问题描述
如何通过另一个 LayOut 文件的 ID 更改 TextView?
这是代码:https ://pastebin.com/BDs4H3uE
这是场景:
我创建了一个抽屉菜单,这是布局 XML:
活动主.xml:
<com.google.android.material.navigation.NavigationView
android:layout_width="277dp"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/drawer_menu"
app:headerLayout="@layout/header"
/>
菜单文件夹中的drawer_menu.xml [滑块菜单]
菜单文件夹中的 right_menu.xml [包含通知图标的右侧菜单]
在 right_menu.xml 中,我添加了布局文件:
<item
android:title="Notifications"
android:id="@+id/notification_icon"
app:showAsAction="ifRoom"
app:actionLayout="@layout/bell"/>
铃铛布局文件包含铃铛图标和带有 id (@+id/notification_num) 的 TextView,以数字显示通知计数。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
style="@android:style/Widget.ActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:id="@+id/right_menu"
android:clickable="true"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/hotlist_bell"
android:src="@drawable/bell_icon"
></ImageView>
<TextView
android:id="@+id/notification_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/hotlist_bell"
android:layout_alignLeft="@+id/hotlist_bell"
android:layout_alignTop="@+id/hotlist_bell"
android:layout_alignRight="@id/hotlist_bell"
android:layout_marginStart="13dp"
android:layout_marginLeft="13dp"
android:layout_marginTop="-3dp"
android:layout_marginRight="17dp"
android:background="@drawable/rounded_square"
android:gravity="center"
android:paddingLeft="4dp"
android:paddingRight="5dp"
android:paddingBottom="1dp"
android:text=""
android:textColor="#ffffffff"
android:textSize="12sp" />
</RelativeLayout>
问题:
我想从 MainActivity.java 文件动态更改 TextView 文本。例如@+id/notification_num 的文本
解决方案
基本上我想要的是更改菜单项的 TextView,这是帮助我的代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.right_menu,menu);
TextView textView = (TextView) menu.findItem(R.id.notification_icon).getActionView().findViewById(R.id.hotlist_hot);
textView.setText("11");
return super.onCreateOptionsMenu(menu);
}
推荐阅读
- c++ - 模板参数包:如何创建具有相同长度的独立类型的元组
- java - 如何遍历霍夫曼树并访问存储的字符?
- r - 在 dplyr 中选择特定行
- vb.net - 将下载的文件保存到资源 VB.NET
- pepper - 套接字未连接 Pepper
- csv - Java - 读取 csv 文件 - 忽略引号之间的逗号
- angular2-routing - 如何运行 Angular 2 应用程序?
- ruby-on-rails - Rails 5 Eager load 然后 find_by
- arrays - Angular:你如何识别带有 id 的 JSON 对象?
- navigation - JSON-LD 中 SiteNavigationElement 的正确语法和用法