Actionbar支持v7背景不透明

时间:2014-07-29 09:41:08

标签: android android-actionbar

我有问题: 1st:我想自定义操作栏的高度,但它不起作用。

这是我主题中的内容。

<style name="Theme.MyAppTheme" parent="@style/Theme.AppCompat.Light">
        <item name="actionBarStyle">@style/Theme.MyAppTheme.ActionBarStyle</item>
        <item name="windowActionBarOverlay">false</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="actionBarSize">46dp</item>
        <item name="android:height">46dp</item>
        <item name="height">46dp</item>
  </style>

第二。如果无法更改操作栏的高度,请告诉我:&#34;如何使操作栏的背景透明。&#34;。 (我将使用Root Layout height 48dp创建操作栏的自定义视图。然后使用heigh = 46dp创建子视图:))。

请帮帮我。 非常感谢。

2 个答案:

答案 0 :(得分:2)

您的问题是您将windowActionBarOverlay设置为false

要将您的内容放在操作栏下方:

在values.xml中的values.xml中添加它:

    <item name="windowActionBarOverlay">true</item>
    <item name="windowContentOverlay">@null</item>
    <item name="android:windowContentOverlay">@null</item>

这是来自values-v14文件夹的style.xml:

    <item name="windowActionBarOverlay">true</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="windowContentOverlay">@null</item>

然后在您的布局中,您可以使用以下内容获取操作栏的大小:

    android:layout_marginTop="?attr/actionBarSize" 

您需要使用该属性而不是&#34; 48dp&#34;或&#34; 46dp&#34;因为高度根据不同的配置(纵向/横向,平板电脑/手机......)而变化。

要使操作栏透明,您需要更改背景。无论是在您的主题中还是在代码中。

    getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00000000")));

EDIt:我刚刚检查过我的一个项目。显然,在活动布局的根目录上设置边距并不起作用。所以我做了类似的事情:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<View //invisible view, to prevent warning
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:visibility="gone" >
</View>

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="?attr/actionBarSize" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

         //real content

    </LinearLayout>
</ScrollView>

答案 1 :(得分:1)

试试这个:

ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#000000")));