【问题标题】:Change dialog styles in Android在 Android 中更改对话框样式
【发布时间】:2017-05-05 11:26:28
【问题描述】:

如何更改应用程序中所有对话框的样式?

我的应用程序使用了一些“材质深色主题”-> 我不知道为什么,所有对话框都有“丑陋的灰色”颜色,我无法更改它!

我试过了:

super(context, R.style.my_super_dialog_style);

但我不能那样改变我的偏好!

我正在使用:

  1. 警报对话框
  2. 进度对话框
  3. 列表首选项(点击后对话框在哪里 -> 带有选项)
  4. multiselectpreference(就像 3.)
  5. 文本编辑首选项

我需要改变:

  1. 背景颜色
  2. 标题颜色
  3. 消息颜色
  4. 进度颜色(可选,与 4、6、7 的颜色相同)
  5. 正/负按钮文本颜色(可选,我正在通过 java 更改)
  6. 复选框活动颜色(可选,与 4、6、7 的颜色相同)
  7. 无线电激活颜色(可选,与 4、6、7 相同的颜色)

顺便说一句,当我终于想到我找到了颜色时(通过“主题编辑器”),颜色无法编辑,因为它是只读的!当我复制该样式时,它不起作用。

【问题讨论】:

  • 为您的应用制作自定义对话框...为此您必须制作 xml(UI 布局)文件并在您的对话框中填充它

标签: java android styles


【解决方案1】:

您可以使用自定义布局创建对话框。

首先为您的对话框创建自定义布局

例如

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/dialogrectangle">


<TextView
    android:id="@+id/sub_dialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Text"
    android:layout_centerInParent="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="dimen/marginTop"
    android:textSize="@dimen/invalidSize"
    />




<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:scaleType="fitXY"
    android:layout_marginBottom="dimen/marginBotom"
    android:src="@drawable/okay"/>

之后创建对话框类

public class ViewDialog {
public void showDialog(View activity,int width,int height){
    final Dialog dialog = new Dialog(activity.getContext());
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setCancelable(false);
    dialog.setContentView(R.layout.custom_dialog);

    ImageView dialogButton = (ImageView) dialog.findViewById(R.id.okay);
    dialogButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });

    dialog.show();
    Window window = dialog.getWindow();

    window.setLayout(width, height);

}
} 

然后使用这些行在您想要显示的位置显示对话框

 ViewDialog dialog = new ViewDialog();

 dialog.showDialog(view,width,height);

如果有帮助,请告诉我。 :)

【讨论】:

  • 这样我还必须创建自定义文本编辑首选项、列表首选项、多选首选项..就像通过构造函数设置自定义样式一样。
  • 是的,你是对的,你需要为每个人定制布局。
【解决方案2】:

我认为你必须定义自己的主题风格。仅在某些属性窗口中无法更改所需属性。

【讨论】:

  • 是的,我知道.. 但是怎么做? (使其适用于每个组件)
猜你喜欢
  • 2016-04-05
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多