Android如何通过支持actionbar获取AppCompat.Translucent类型主题?

Edm*_*jas 63 android android-theme android-actionbar android-actionbar-compat

我想将支持操作栏添加到我的一个活动中,我之前一直在使用theme.translucent和这个活动,但是为了使支持actionbar工作我需要继承Theme.AppCompat,我需要保持半透明这个活动的主题,但不幸的是,我没有默认情况下可以看到的Theme.AppCompat.translucent,有什么方法可以做到这一点?

Cam*_*ham 151

您可以创建一组新的样式使用具有相同的属性Theme.Translucent的themes.xml.

将以下内容添加到styles.xml文件中:

<style name="Theme.AppCompat.Translucent">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation</item>
</style>
Run Code Online (Sandbox Code Playgroud)

Theme.AppCompat如果要从主题中继承其他内容(如对话框样式等),可以将前缀更改为其他内容.例如,类似名称Theme.AppCompat.Light.Translucent将具有Light主题的属性.

要使用新样式,请将theme属性设置为 @style/Theme.AppCompat.Translucent

<activity
    android:name=".TranslucentActivity"
    android:theme="@style/Theme.AppCompat.Translucent" >
</activity>
Run Code Online (Sandbox Code Playgroud)

  • 但是我在透明活动中获得了Black ToolBar.请帮我修复我的错误. (4认同)
  • 它是不好的,正确的方法来添加所需的属性(例如)`<style name ="AppTheme"parent ="Theme.AppCompat.Light.DarkActionBar"> ...`我添加了`<item name ="android :windowIsTranslucent"> true </ item>`到我的AppCompat主题,所以应用程序启动时没有白色背景 (2认同)

Dha*_*eda 36

帕拉玛,

<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@android:style/Animation</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

如果您希望工具栏消失,那么这应该是样式标题.您可以使用任何具有NoActionBar的父主题用于其他效果.

希望这可以帮助


小智 9

如果我们使用 Translucent 进行透明活动。它引发了其他问题 - Msgbox 的颜色(现在是白色以前是黑色)、默认对话框颜色、微调器确实下拉但不显示下划线和下拉箭头。微调器颜色为黑色,文字为黑色;下拉白色下拉文本黑色等。为了克服这个问题,你可以使用下面的代码

很有型

<style name="Theme.AppCompat.Transparent.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
 <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)

在清单文件中

<activity
        android:name=".activity.YourActivityName"
        android:theme="@style/Theme.AppCompat.Transparent.NoActionBar" />
Run Code Online (Sandbox Code Playgroud)

我希望它会有所帮助谢谢