自定义Android appcompat操作栏:如何删除v11 +设备上的底部边框

时间:2014-01-03 01:19:31

标签: android android-actionbar border android-appcompat

我正在使用Android appcompat库来创建自定义操作栏。这一切都有效。在不使用v11主题(值文件夹)的设备上,不显示底部边框,因为它不应该出现。但是当v11 +设备使用主题时(当然在values-v11文件夹中)有一个底部边框。它是一个薄的1dp类型边框。我有一个自定义背景应用于操作栏,这一切都适用于版本< v11,在v11 +设备上添加了一个恼人的额外底部边框; - ]

现在我通过另一篇SO文章发现用户正在使用ActionBarSherlock,基本主题需要是Theme.X而不是theme.X.Light.x来解决这个问题(没有解释为什么)。我应用了这个相同的逻辑(我使用的是android的appcompat,而不是sherlock)并且它可以用于删除边框但是其他样式问题出现了单选按钮等,采用了非轻量级主题。所以我想将基本主题保持为'Theme.AppCompat.Light'并摆脱操作栏上的底部边框。同样,它不会出现在设备上< V11。

截屏(Theme.AppCompat.Light / Theme.AppCompat):

http://i39.tinypic.com/2m66d1v.png

http://i42.tinypic.com/27zvtec.png

我的主题(在值文件夹中减去android前置相同):

    <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Application theme. -->
    <style name="ActionTheme" parent="@style/Theme.AppCompat.Light">           
        <item name="android:actionBarStyle">@style/ActionBarStyle</item>         
        <item name="android:windowActionBar">true</item>  
    </style>

   <style name="ActionBarStyle" parent="@style/Widget.AppCompat.ActionBar">     
       <item name="android:displayOptions"></item>           
        <item name="android:background">@drawable/header_style</item>         
         <item name="android:titleTextStyle">@style/ActionBarTitleText</item>  
        <item name="android:layout_height">wrap_content</item> 
        <item name="android:layout_width">wrap_content</item>   
        <item name="android:height">70dp</item> 
     </style>

    <style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/color_dark_blue</item>           
    </style>     
</resources>

3 个答案:

答案 0 :(得分:14)

通过SO的力量,我的问题终于得到了回答!在过去的两天里,我尝试了以下链接中的OP尝试的所有内容。不知怎的,我没有看到这个SO线程(我没有使用搜索术语'divider',methinks)。

对我来说有用的是将no window overlay属性设置为null。我看到设置窗口颜色也可以在更高版本的android(4.2.x +)上工作,所以我决定设置两者。这是SO链接与这个令人讨厌的功能的解决方案(错误?):link

我的最终价值-v11 / themes.xml -

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Application theme. -->
    <style name="ActionTheme" parent="@style/Theme.AppCompat.Light">           
        <item name="android:actionBarStyle">@style/ActionBarStyle</item>         
        <item name="android:windowActionBar">true</item>  
        <item name="android:windowBackground">@android:color/white</item> 
        <item name="android:windowContentOverlay">@null</item>
    </style>

   <style name="ActionBarStyle" parent="@style/Widget.AppCompat.ActionBar">     
       <item name="android:displayOptions"></item>           
        <item name="android:background">@drawable/header_style</item>         
         <item name="android:titleTextStyle">@style/ActionBarTitleText</item>  
        <item name="android:layout_height">wrap_content</item> 
        <item name="android:layout_width">wrap_content</item>   
        <item name="android:height">70dp</item>  
     </style>

    <style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/color_dark_blue</item>           
    </style>     
</resources>

答案 1 :(得分:2)

如果用户2545146回答不适用于棒棒糖。

从活动中调用操作栏上的setElevation。

getSupportActionBar().setElevation(0);

答案 2 :(得分:0)

唯一对我有用的是

AppBarLayout appBarLayout = findViewById(R.id.my_app_bar_layout);
appBarLayout.setOutlineProvider(null);

api> =仅21