onunix 2024-03-28 18:20 采纳率: 77.8%
浏览 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日