onunix 2024-03-28 18:20 采纳率: 80%
浏览 3

这里getLayoutInflater().inflate应该怎么用

AppCompatActivity 默认带了个 ActionBar,想用自定义的toolbar代替它,然后已经写好了一个toolbar.xml文件,然后,想这么代替,

ActionBar actionBar = getSupportActionBar();
getLayoutInflater().inflate(R.layout.toolbar, (ViewGroup)actionBar);

这写法错在哪?

网上的方法都是将toolbar.xml里面的东西写到Activity的布局文件里面去的,但这里想使用2个不同的布局文件(即toolbar使用一个单独的布局文件)

  • 写回答

3条回答 默认 最新

  • 关注

    回答参考Claude 3.使用 getLayoutInflater().inflate() 方法的目的是将自定义的 toolbar.xml 布局文件加载到 ActionBar 上。但是这种方式是不正确的,因为 ActionBar 本身并不是一个 ViewGroup。需要将自定义的 Toolbar 设置为 ActionBar

    以下是正确的做法:

    1. 在 Activity 的布局文件中添加一个 Toolbar 视图。例如:
    <?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"
        android:orientation="vertical">
    
        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary" />
    
        <!-- 其他视图... -->
    
    </LinearLayout>
    
    1. 在 Activity 的 onCreate 方法中,找到 Toolbar 视图并将其设置为 ActionBar
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    
        val toolbar = findViewById<Toolbar>(R.id.toolbar)
        setSupportActionBar(toolbar)
    }
    

    通过这种方式,就可以使用自定义的 Toolbar 作为 ActionBar。可以在 toolbar.xml 文件中定义 Toolbar 的外观和行为,例如添加标题、导航图标、菜单项等。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月28日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题