Android 如何获取支持操作栏的 AppCompat.Translucent 类型主题?
Posted
技术标签:
【中文标题】Android 如何获取支持操作栏的 AppCompat.Translucent 类型主题?【英文标题】:Android how to get AppCompat.Translucent type theme with support actionbar? 【发布时间】:2014-01-18 16:18:44 【问题描述】:我想将支持操作栏添加到我的一项活动中,我之前一直在使用 theme.translucent 进行此活动,但为了使支持操作栏工作,我需要继承 Theme.AppCompat,我需要在这个活动中保持一个半透明的主题,但不幸的是没有我可以默认看到的 Theme.AppCompat.translucent,有什么办法可以做到这一点?
【问题讨论】:
【参考方案1】:您可以从themes.xml 创建一组与Theme.Translucent
具有相同属性的新样式。
将以下内容添加到您的 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>
如果您想从主题继承其他内容(例如对话框样式等),可以将前缀 Theme.AppCompat
更改为其他名称。例如,Theme.AppCompat.Light.Translucent
之类的名称将具有 Light 主题的属性。
要使用新样式,请将主题属性设置为@style/Theme.AppCompat.Translucent
<activity
android:name=".TranslucentActivity"
android:theme="@style/Theme.AppCompat.Translucent" >
</activity>
【讨论】:
想给一个activity添加一个Alertbox,但是又想有一个半透明的ctivity,这是一个完美的解决方案。添加了另一个建议作为对现有答案的更新。 定义的主题有一个问题。当我将上述主题应用于 时,方向不起作用,但如果我删除上述主题,方向正常工作。 但我在透明活动中得到黑色工具栏。请帮我修复我的错误。 这不好,将所需属性添加到(例如)<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">...
的正确方法我已将<item name="android:windowIsTranslucent">true</item>
添加到我的 AppCompat 主题中,因此应用启动时没有白色背景
这仍然显示操作栏。要消除操作栏,只需添加一个父项,例如: 【参考方案2】:
参数,
<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>
如果您希望工具栏消失,这应该是样式标题。您可以使用任何具有 NoActionBar 的父主题来实现其他效果。
希望对你有帮助
【讨论】:
【参考方案3】:如果我们将 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>
在清单文件中
<activity
android:name=".activity.YourActivityName"
android:theme="@style/Theme.AppCompat.Transparent.NoActionBar" />
我希望它会有所帮助 谢谢
【讨论】:
感谢您的帮助 我使用***.com/a/21492572/5199061 来创建透明活动,但我遇到了颜色不同的问题。但是这个答案帮助我摆脱了@Monika在答案中提到的颜色不同的问题。谢谢 uggh,这些解决方案似乎都不起作用了,我一直在黑屏。【参考方案4】:Cameron 的回答是 nice hack,但它产生了一个浮动操作栏并为我的状态栏着色,这是我不想要的。所以我添加了更多 xml 属性以使状态栏透明(对于 sdk >=19)并使用 java 代码使操作栏不可见。
mainActivity.java:
public class MainActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();
...
...
styles.xml
<style name="AppTheme.TranslucentBG">
<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>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
manifest.xml
<application
android:icon="@mipmap/ic_launcher"
...
android:theme="@style/AppTheme"
...
>
<activity android:name=".MainActivity"
android:theme="@style/AppTheme.TranslucentBG"
...
>
...
</activity>
</application>
【讨论】:
以上是关于Android 如何获取支持操作栏的 AppCompat.Translucent 类型主题?的主要内容,如果未能解决你的问题,请参考以下文章