【发布时间】:2020-07-15 00:07:13
【问题描述】:
如何删除操作栏和主屏幕之间的线条或分隔线? 如何在android中更改此分隔线的颜色? 提前致谢。
【问题讨论】:
-
我之前看到过这个问题,但我不能用这些答案删除分隔线,你能解释一下,与哪种风格的操作栏相关的分隔线。我当然解释说我不需要覆盖操作酒吧。我只是删除该行,例如您的项目中有样式 Theme.Holo.Light.NoActionBar。
如何删除操作栏和主屏幕之间的线条或分隔线? 如何在android中更改此分隔线的颜色? 提前致谢。
【问题讨论】:
只需将属性 windowContentOverlay 插入到您的主题中。这种方式太简单了。
<style name="AppTheme" parent="android:Theme.Holo.Light">
<!-- Customize your theme here. -->
<item name="android:windowContentOverlay">@null</item>
</style>
【讨论】:
经过更多的努力,我可以找到我理想的主题。
更改样式后,您必须自己更改其他设置,例如代码。
<resources>
<style name="AppTheme" parent="android:Theme.Holo">
<item name="android:actionBarStyle">@style/AppTheme.ActionBar</item>
<item name="android:background">#ff0000</item>
<item name="android:colorBackground">#ff0000</item>
</style>
<style name="AppTheme.ActionBar" parent="android:Widget.ActionBar">
<item name="android:background">#ff0000</item>
</style>
</resources>
下面的代码是我最后一次挑战,我找到了解决它的方法。
<resources>
<style name="AppTheme" parent="android:Theme.Holo.Light">
<item name="android:actionBarStyle">@style/AppTheme.ActionBar</item>
<item name="android:background">#ff0000</item>
<item name="android:colorBackground">#ff0000</item>
</style>
<style name="AppTheme.ActionBar" parent="android:Widget.ActionBar">
<item name="android:background">#ff0000</item>
</style>
</resources>
下图是第一个代码,如果您注意到没有任何分隔符。
【讨论】:
在 Kotlin 上,您可以使用 supportActionBar?.elevation = 0f 移除 ActionBar 的阴影。
将此代码添加到所需活动的onCreate() 函数。例如:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Hide ActionBar shadow
supportActionBar?.elevation = 0f
}
?. 运算符控制 空指针异常,如果您在此 Activity 上没有 ActionBar。
注意:如果您不使用AppCompat,请致电actionBar?.elevation = 0f。
【讨论】:
这些解决方案都不适合我。我最终将此代码添加到我的MainActivity 的onCreate() 事件中:
actionBar = getSupportActionBar();
actionBar.setElevation(0);
【讨论】:
如果您使用 AppCompat,您需要设置 parent="Theme.AppCompat",而不是 "Theme.AppCompat.Light"(同样代表 ActionBar):)
例如: @style/MyActionBar 真的 @style/MyActionBar 真的
<style name="MyActionBar" parent="Base.Widget.AppCompat.ActionBar">
<item name="android:background">@android:color/transparent</item>
<!--For compatibility-->
<item name="background">@android:color/transparent</item>
</style>
【讨论】:
这对我有用:
我刚刚在 onCreate() 方法中添加了以下代码行
getSupportActionBar().setElevation(0);
【讨论】:
在您的styles.xml 文件中,查找您的AppTheme 样式并将以下样式添加到其中
<item name="android:actionBarDivider">@android:color/transparent</item>
喜欢这个
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:fontFamily">@font/roboto</item>
<item name="android:actionBarDivider">@android:color/transparent</item>
</style>
它实际上所做的是将活动窗口和操作栏之间的分隔线的背景设置为透明。
【讨论】:
如果您使用的是AppBarLayout,那么这些都无济于事。我找到了解决方案:
AppBarLayout appBarLayout = findViewById(R.id.app_bar_layout);
appBarLayout.setOutlineProvider(null);
【讨论】: