如何在膨胀的视图工具栏android java中显示工具栏图标

Posted

技术标签:

【中文标题】如何在膨胀的视图工具栏android java中显示工具栏图标【英文标题】:How to display toolbar icons inside an inflated view toolbar android java 【发布时间】:2022-01-10 08:18:43 【问题描述】:

我的活动文件中有一个膨胀的视图,而布局文件恰好有一个工具栏小部件,我希望用图标填充它。我尝试使用代码toolbar.Inflate(int resource);,但它没有出现,工具栏文本也没有出现toolbar.Title=name; 布局的代码就是这个……

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="@drawable/chat_background"
    android:baselineAligned="false"
    android:layout_
    android:layout_>

    <com.google.android.material.appbar.AppBarLayout
        android:layout_
        android:layout_
        android:theme="@style/AppTheme.AppBarOverlay">

        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar3"
            android:layout_
            android:layout_
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

     </com.google.android.material.appbar.AppBarLayout>
    <EditText
        android:layout_margin="5dp"
        android:layout_alignParentBottom="true"
        android:padding="9dp"
        android:drawableRight="@drawable/tinted_camera"
        android:background="@drawable/rounded"
        android:drawableLeft="@drawable/emoji"
        android:hint="Type a Message"
        android:inputType="textMultiLine"
        android:id="@+id/message_box"
        android:gravity="bottom"
        android:layout_
        android:layout_/>

</RelativeLayout>

我尝试先膨胀视图,获取工具栏的 ID,然后尝试膨胀工具栏右侧的图标,如下所示,但它不起作用。

            try
            
                //Inflate our view with the Chat layout
                View chat_view = LayoutInflater.Inflate(Resource.Layout.chat_view, null);
                //define the toolbar
                AndroidX.AppCompat.Widget.Toolbar toolbar = chat_view.FindViewById<AndroidX.AppCompat.Widget.Toolbar>(Resource.Id.toolbar3);
                SetSupportActionBar(toolbar);
                //get the nanme of the current contact
                string name = (string)contact_list.GetItemAtPosition(e.Position);
                toolbar.Title= name;
                //inflate this toolbar
                toolbar.InflateMenu(Resource.Menu.video_menu_item);
                toolbar.InflateMenu(Resource.Menu.call_menu_item);
                toolbar.InflateMenu(Resource.Menu.bars_menu_item);
                toolbar.SetNavigationIcon(Resource.Drawable.back_arrow);
                //build a new alert dialog
                Android.App.AlertDialog.Builder builder = new Android.App.AlertDialog.Builder(this, Android.Resource.Style.ThemeMaterialLightNoActionBarFullscreen);
                builder.SetView(Resource.Layout.chat_view);
                builder.Show();
            catch (Exception ex)
            
                Toast.MakeText(this,ex.Message,ToastLength.Short).Show();
            

我如何成功地使这个工具栏在一个膨胀的视图中显示图标和文本?

【问题讨论】:

【参考方案1】:

试试这个:

<androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar3"
        android:layout_
        android:layout_
        android:background="?attr/colorPrimary"
        app:menu="@menu/your_menu"
        app:navigationIcon="@drawable/your_icon" />

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/new_game"
          android:icon="@drawable/ic_new_game"
          android:title="@string/new_game"
          android:showAsAction="ifRoom"/>
    <item android:id="@+id/help"
          android:icon="@drawable/ic_help"
          android:title="@string/help" />
</menu>

我认为你需要检查你的 menu.xml 文件。

【讨论】:

我有多个菜单图标,所以在布局文件中只分配一个是否有效?因为我相信每个菜单项只能有一个可绘制的图标 developer.android.com/guide/topics/ui/menus 这里有一些帮助 你做到了,现在我明白了,你能告诉我如何在你的答案中标记一个包含多个图标的菜单吗? 好的,菜单 xml 的标记需要分开,所以它不会混淆未来的访问者,因为它是一个单独的文件,谢谢 嘿,菜单显示为列表,我需要从右到左填充工具栏的图标吗?

以上是关于如何在膨胀的视图工具栏android java中显示工具栏图标的主要内容,如果未能解决你的问题,请参考以下文章

java [Layout Inflater]获取布局充气器对象并使视图膨胀的方法。 #android_snippet #android

如何使用Android自定义视图中的属性设置调整膨胀布局的大小?

在 Android 中膨胀视图后,自定义视图子项为空

Android:在片段内膨胀自定义视图

Android在抽屉布局中膨胀导航视图给出异常

Android - 膨胀文本视图时出错