从Dialog Activity更改操作栏背景

时间:2013-12-11 10:53:46

标签: android styles android-activity android-actionbar android-dialog

我正在创建一个活动对话框,并希望自定义活动的布局。 我已经通过我的活动在清单中设置了自定义样式,扩展了"@android:style/Theme.Holo.Dialog"

如果我使用<item name="android:windowTitleStyle">CUSTOM_STYLE_NAME</item>,backgroundcolor的唯一更改是在标题后面,而不是整个操作栏。

在我的自定义样式中设置<item name="android:actionBarStyle">也无济于事。

那么如何在“活动对话框”中更改操作栏的背景?

enter image description here

2 个答案:

答案 0 :(得分:1)

我修复了在stackoverflow上发现的this调整问题。 你基本上做的是声明你自己的对话框样式,你将其作为主题添加到你的活动:

<style name="PopupTheme" parent="android:Theme.Holo.Light.Dialog">
    <item name="android:windowIsFloating">false</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowSoftInputMode">stateAlwaysHidden</item>
    <item name="android:windowActionModeOverlay">true</item>
    <item name="android:windowIsTranslucent">true</item>
</style>

在你的oncreate中声明以下方法:

public static void showAsPopup(Activity activity) {
   //To show activity as dialog and dim the background, you need to declare   android:theme="@style/PopupTheme" on for the chosen activity on the manifest
  activity.requestWindowFeature(Window.FEATURE_ACTION_BAR);
  activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND,
        WindowManager.LayoutParams.FLAG_DIM_BEHIND);
  LayoutParams params = activity.getWindow().getAttributes(); 
  params.height = 850; //fixed height
  params.width = 850; //fixed width
  params.alpha = 1.0f;
  params.dimAmount = 0.5f;
  activity.getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); 
  setContentView(R.layout.activity_main);
}

在此之后,您可以使用您选择的背景颜色添加自己的自定义操作栏样式:

<item name="android:actionBarStyle">@style/MyActionBar</item>

PS。 LayoutParams来自WindowManager

答案 1 :(得分:0)

我没有看到你的自定义样式XML,我想你设置textbackground而不是backgrondcolor ..

相关问题