【问题标题】:Actionbar support v7 background not transparentActionbar 支持 v7 背景不透明
【发布时间】:2014-07-29 09:41:07
【问题描述】:

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

这是我主题中的内容。

<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>

第二。如果无法更改操作栏的高度,请告诉我:“如何使操作栏的背景透明。”。 (我将创建具有根布局高度 48dp 的操作栏的自定义视图。然后创建具有高度 = 46dp 的子视图 :)。

请帮助我。 非常感谢。

【问题讨论】:

  • 在你的actionbarstyle中使用这一行..... ​​#00000000
  • 我添加了。但它不起作用。 :(
  • @Prag's 它在底部操作栏中仍然有一条黑线。 (我在android v4.3上运行)
  • @speedDeveloper 我想设置操作栏高度。(不获取操作栏高度)
  • 看这里设置ActionBar高度:[Set ActionBar height][1][1]:stackoverflow.com/questions/17439683/…

标签: android android-actionbar


【解决方案1】:

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

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

从 values 文件夹中将其添加到您的 style.xml 中:

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

这在您的 style.xml 中,来自 values-v14 文件夹:

    <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" 

您需要使用属性而不是“48dp”或“46dp”,因为高度会根据不同的配置(人像/风景、平板电脑/手机...)而变化。

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

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

编辑:我刚刚签入了我的一个项目。显然,在活动布局的根部设置边距是行不通的。所以我做了类似的事情:

<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>

【讨论】:

  • 谢谢。你的意思是我不能改变动作栏的高度。我的应用程序仅适用于肖像。那么我如何无法更改操作栏支持 v7 的高度。 (不能改变吗?)
  • 谢谢。我想我会改用 Actionbar Sherlock。
  • 它也适用于 ABS,唯一的区别是使用getSupportActionBar()
  • 本身并没有太大的差异,但我会投票给Color.TRANSPARENT,而不是Color.parseColor("#00000000")。更简单和自我记录。
【解决方案2】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 2011-12-15
    • 2015-11-12
    • 2013-08-19
    • 2017-01-19
    • 2011-10-24
    相关资源
    最近更新 更多