我想要在其中一个活动中添加支持actionbar,之前我一直在使用theme.translucent来配置这个活动,但为了使支持actionbar正常工作,我需要继承Theme.AppCompat。我需要在该活动中保留半透明主题,但不幸的是,默认情况下没有Theme.AppCompat.translucent,是否有任何方法可以实现这个效果?
您可以创建一个新的样式集,其属性与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>
Parama,
<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的父主题来实现其他效果。
希望这可以帮助到您。
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>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">...
添加所需的属性。我已经向我的AppCompat主题中添加了<item name="android:windowIsTranslucent">true</item>
,这样应用程序启动时就没有白色背景了。 - user25