android - 从对话框 Activity 更改操作栏背景

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

我正在制作一个 Activity 对话框并想自定义 Activity 的布局。 我已经通过扩展 "@android:style/Theme.Holo.Dialog" 的 Activity 在 list 中设置了自定义样式.

如果我使用 <item name="android:windowTitleStyle">CUSTOM_STYLE_NAME</item>背景颜色的唯一变化是在标题后面,而不是整个操作栏。

设置<item name="android:actionBarStyle">在我的自定义样式中也没有帮助。

那么如何在 Activity 对话框中更改操作栏的背景呢?

enter image description here

最佳答案

我已经修复了 this我在 stackoverflow 上找到的调整。 您基本上要做的是声明您自己的对话框样式,并将其作为主题添加到您的 Activity 中:

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

附言。 LayoutParams 来自 WindowManager

关于android - 从对话框 Activity 更改操作栏背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20517202/

相关文章:

java - 网络连接时如何检测网络变化和从 A 到 B 的变化 Activity

android - Android 应用程序中的 Google Product Sans 字体可以使用吗?

android - android home 中所有应用的级联 View 的名称是什么(见附图)?

android - 用于创建 Activity 的 Intent 是否存在?

android - 任务 ':app:transformClassesAndResourcesWithProguardForRelease' 执行失败 -- React Native

android - TabActivity 将附加信息传递给子 Intent

wpf - 发光的 WPF 按钮

python - pandas .boxplot 属性不起作用

c# - 在 WPF 中,我可以手动 "reset"或重新测试样式的触发器吗?

Android Activity 作为一个对话框