首页 > 解决方案 > 更改另一个布局文件的 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 的文本

标签: androidandroid-studio

解决方案


基本上我想要的是更改菜单项的 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);
}

推荐阅读