更改“ DialogPreference”的突出显示颜色(按钮颜色)

芦香

完全按照http://www.lukehorvat.com/blog/android-seekbardialogpreference中说明的方式实现了DialogPreference

另外,我能够更改DialogPreference的文本和分隔符颜色,但是当按钮被按下时,我无法更改其突出显示颜色。有人知道怎么做这个吗?

更新:

我将以下布局用于DialogPreference

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">
<TextView
        android:id="@+id/text_dialog_message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dip"
        android:paddingLeft="12dip"
        android:paddingRight="12dip"/>
<TextView
        android:id="@+id/text_progress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="6dip"
        android:gravity="center_horizontal"/>
<SeekBar
        android:id="@+id/seek_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="6dip"
        android:layout_marginTop="6dip"/>
</LinearLayout>

到目前为止,与该DialogPreference或我更改的布局有关的唯一样式属性是通过编程方式更改的:

        int alertTitleId = this.getContext().getResources().getIdentifier("alertTitle", "id", "android");
        TextView alertTitle = (TextView) getDialog().getWindow().getDecorView().findViewById(alertTitleId);
        alertTitle.setTextColor(color); // change title text color

        int titleDividerId = this.getContext().getResources().getIdentifier("titleDivider", "id", "android");
        View titleDivider = getDialog().getWindow().getDecorView().findViewById(titleDividerId);
        titleDivider.setBackgroundColor(color); // change divider color
肾上腺的

您所需要做的就是创建子类DialogPreference,然后调用Resource.getIdentifier来定位View想要主题的每个对象,就像您在做的一样,但是您无需调用Window.getDecorView这是一个例子:

自订 DialogPreference

public class CustomDialogPreference extends DialogPreference {

    public CustomDialogPreference(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public CustomDialogPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected void showDialog(Bundle state) {
        super.showDialog(state);
        final Resources res = getContext().getResources();
        final Window window = getDialog().getWindow();
        final int green = res.getColor(android.R.color.holo_green_dark);

        // Title
        final int titleId = res.getIdentifier("alertTitle", "id", "android");
        final View title = window.findViewById(titleId);
        if (title != null) {
            ((TextView) title).setTextColor(green);
        }

        // Title divider
        final int titleDividerId = res.getIdentifier("titleDivider", "id", "android");
        final View titleDivider = window.findViewById(titleDividerId);
        if (titleDivider != null) {
            titleDivider.setBackgroundColor(green);
        }

        // Button views
        window.findViewById(res.getIdentifier("button1", "id", "android"))
                .setBackgroundDrawable(res.getDrawable(R.drawable.your_selector));
        window.findViewById(res.getIdentifier("button2", "id", "android"))
                .setBackgroundDrawable(res.getDrawable(R.drawable.your_selector));
        window.findViewById(res.getIdentifier("button3", "id", "android"))
                .setBackgroundDrawable(res.getDrawable(R.drawable.your_selector));

    }

}

XML首选项

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <path_to.CustomDialogPreference
        android:dialogMessage="Message"
        android:negativeButtonText="Cancel"
        android:positiveButtonText="Okay"
        android:title="Title" />

</PreferenceScreen>

自定义选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true">

    <item android:drawable="@drawable/your_pressed_drawable" android:state_pressed="true"/>
    <item android:drawable="@drawable/your_default_drawable"/>

</selector>

备用选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true">

    <item android:drawable="@color/your_pressed_color" android:state_pressed="true"/>
    <item android:drawable="@color/your_default_color/>

</selector>

屏幕截图

例

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更改合成器使用的错误突出显示颜色

来自分类Dev

无法更改UITableView蓝色突出显示颜色

来自分类Dev

NSTableview更改突出显示颜色

来自分类Dev

更改UISearchBar选项突出显示颜色iOS 7

来自分类Dev

禁用或更改Firefox的元素/图像突出显示颜色

来自分类Dev

Qt如何更改特定QComboBox项目的突出显示颜色

来自分类Dev

更改的突出显示颜色

来自分类Dev

在vim中更改水平拆分状态行的突出显示颜色

来自分类Dev

在PreferenceActivity中更改片段的突出显示和标题颜色

来自分类Dev

在Matlab编辑器中更改文本突出显示颜色

来自分类Dev

可可osx NSTableview更改行突出显示颜色

来自分类Dev

如何在GNU Enscript中更改语法突出显示颜色?

来自分类Dev

如何在CRichEditCtrl中更改突出显示颜色?

来自分类Dev

将鼠标悬停在XAML WPF上时,将按钮默认的突出显示颜色更改为透明颜色?

来自分类Dev

NSTableView行-突出显示时更改颜色

来自分类Dev

Python xlsxwriter:更改单个单元格突出显示颜色

来自分类Dev

如何在Qt按钮中更改焦点颜色(突出显示颜色)?

来自分类Dev

在MySQLWorkbench中更改语法突出显示颜色

来自分类Dev

如何更改文本突出显示颜色?

来自分类Dev

无法更改UITableView蓝色突出显示颜色

来自分类Dev

更改浮点中的突出显示点颜色

来自分类Dev

如何更改Netbeans的突出显示颜色?

来自分类Dev

更改“鼠标突出显示”颜色的代码

来自分类Dev

更改表格选择多个突出显示颜色

来自分类Dev

更改“ DialogPreference”的突出显示颜色(按钮颜色)

来自分类Dev

更改Roku屏幕模板中按钮的突出显示颜色

来自分类Dev

更改多个按钮的突出显示颜色后,单击时按钮会消失

来自分类Dev

突出显示文字并更改颜色

来自分类Dev

突出显示元素时更改链接的颜色

Related 相关文章

  1. 1

    更改合成器使用的错误突出显示颜色

  2. 2

    无法更改UITableView蓝色突出显示颜色

  3. 3

    NSTableview更改突出显示颜色

  4. 4

    更改UISearchBar选项突出显示颜色iOS 7

  5. 5

    禁用或更改Firefox的元素/图像突出显示颜色

  6. 6

    Qt如何更改特定QComboBox项目的突出显示颜色

  7. 7

    更改的突出显示颜色

  8. 8

    在vim中更改水平拆分状态行的突出显示颜色

  9. 9

    在PreferenceActivity中更改片段的突出显示和标题颜色

  10. 10

    在Matlab编辑器中更改文本突出显示颜色

  11. 11

    可可osx NSTableview更改行突出显示颜色

  12. 12

    如何在GNU Enscript中更改语法突出显示颜色?

  13. 13

    如何在CRichEditCtrl中更改突出显示颜色?

  14. 14

    将鼠标悬停在XAML WPF上时,将按钮默认的突出显示颜色更改为透明颜色?

  15. 15

    NSTableView行-突出显示时更改颜色

  16. 16

    Python xlsxwriter:更改单个单元格突出显示颜色

  17. 17

    如何在Qt按钮中更改焦点颜色(突出显示颜色)?

  18. 18

    在MySQLWorkbench中更改语法突出显示颜色

  19. 19

    如何更改文本突出显示颜色?

  20. 20

    无法更改UITableView蓝色突出显示颜色

  21. 21

    更改浮点中的突出显示点颜色

  22. 22

    如何更改Netbeans的突出显示颜色?

  23. 23

    更改“鼠标突出显示”颜色的代码

  24. 24

    更改表格选择多个突出显示颜色

  25. 25

    更改“ DialogPreference”的突出显示颜色(按钮颜色)

  26. 26

    更改Roku屏幕模板中按钮的突出显示颜色

  27. 27

    更改多个按钮的突出显示颜色后,单击时按钮会消失

  28. 28

    突出显示文字并更改颜色

  29. 29

    突出显示元素时更改链接的颜色

热门标签

归档