如何在Android ActionBar样式中指定CustomView布局?

时间:2018-07-28 04:31:21

标签: android android-actionbar

在将CustomView应用于ActionBar时,我目前正在按照以下步骤操作。

//Activity.onCreate
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_initialize)
    supportActionBar?.setDisplayShowCustomEnabled(true)
    supportActionBar?.setCustomView(R.layout.appbar)
}

但是,使用相同的CustomView,对所有其他活动使用相同的功能是一种浪费。

有一种方法可以将上述函数放到所有活动都共同继承的父活动中,但我们不想仅为该过程创建父活动。

所以,我要在style.xml中指定customview布局。

<style name="CustomAppBar" parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="android:background">@android:color/transparent</item>
    <item name="android:displayOptions">showCustom</item>
    <!--<item name="android:customNavigationLayout">@layout/appbar</item>-->
</style>

android:customNavigationLayout和android:layout都不是我想要的。

android:customNavigationLayout,android:layout这两个属性都不是我想要的。

即使是android:displayOptions也无法正常工作。 (我必须另外应用setDisplayShowCustomEnabled,因为在上述状态下应用setCustomView时自定义视图不可见)

仅通过修改样式就不可能将自定义视图应用于操作栏吗?

2 个答案:

答案 0 :(得分:0)

如果要使用操作栏自定义视图,可以使用以下方法:

actionBar.setCustomView(View view)

答案 1 :(得分:0)

您也可以 甚至AppBar的任何布局。因此,当您需要时,只需调用它即可。查看这些图像Image 1

Image 2