更改EditTextPreference对话框输入的文本颜色

更改EditTextPreference对话框输入的文本颜色

本文介绍了更改EditTextPreference对话框输入的文本颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我能够更改我的编辑文本首选项的标题和摘要颜色.当您单击它时,我的背景为黑色,按钮为白色.我仍然需要弄清楚如何更改实际值文本.有什么想法吗?

I am able to change the title and summary color of my edit text preference. When you click into it I have the background dark and the buttons white. I still need to figure out how to change the actual value text. Any ideas?

如果我也可以更改该行的颜色,那将很棒.

Would be great if I could change the color of that line too.

import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.graphics.Typeface;
import android.preference.EditTextPreference;
import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.kisnardonline.kisnardonline.GameActivity;
import com.kisnardonline.kisnardonline.R;

@SuppressLint("AppCompatCustomView")
public class FontEditTextPreference extends EditTextPreference {
    public FontEditTextPreference(Context context) {
        super(context);
    }

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

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

    @Override
    protected View onCreateView(ViewGroup viewGroup) {
        Typeface customFont = FontCache.getTypeface("UnderwoodChampionRegular.ttf", GameActivity.commandReceiver.activity_settings);
        View v = super.onCreateView(viewGroup);
        try {
            TextView titleView = (TextView) v.findViewById(android.R.id.title);
            titleView.setTypeface(customFont);
            titleView.setTextColor(ContextCompat.getColor(GameActivity.commandReceiver.activity_settings, R.color.THEME_LIGHT_TEXT));
            TextView summaryView = (TextView) v.findViewById(android.R.id.summary);
            summaryView.setTypeface(customFont);
            summaryView.setTextColor(ContextCompat.getColor(GameActivity.commandReceiver.activity_settings, R.color.THEME_LIGHT_TEXT));
        } catch (Exception e) {
            Log.e("jay", "Exception in FontEditTextPreference", e);
        }

        return v;
    }

    @Override
    protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
        super.onPrepareDialogBuilder(builder);
        builder.getContext().setTheme(R.style.JayPreferenceThemeDialog);
    }
}

我的风格在这里:

<style name="JayPreferenceThemeDialog"  >
    <item name="android:colorBackground">@color/THEME_LIGHTER_BACKGROUND</item>
    <item name="android:textColor">@android:color/background_light</item>
    <item name="android:textColorSecondary">@android:color/background_light</item>
</style>

推荐答案

从链接Zealous共享: Android主题首选项对话框

From the link Zealous shared: Android Theming Preference Dialog

@Override
protected void showDialog(Bundle state) {
    super.showDialog(state);
    Typeface customFont = FontCache.getTypeface("UnderwoodChampionRegular.ttf", GameActivity.commandReceiver.activity_settings);

    final Resources res = getContext().getResources();
    final Window window = getDialog().getWindow();

    // Title
    final int titleId = res.getIdentifier("alertTitle", "id", "android");
    final View title = window.findViewById(titleId);
    if (title != null) {
        ((TextView) title).setTextColor(ContextCompat.getColor(MyCommandReceiver.context_settings, R.color.THEME_LIGHT_TEXT));
        ((TextView) title).setTypeface(customFont);
    }

    // Title divider
    final int titleDividerId = res.getIdentifier("titleDivider", "id", "android");
    final View titleDivider = window.findViewById(titleDividerId);
    if (titleDivider != null) {
        titleDivider.setBackgroundColor(ContextCompat.getColor(MyCommandReceiver.context_settings, R.color.THEME_LIGHT_TEXT));
    }

    // EditText
    final View editText = window.findViewById(android.R.id.edit);
    if (editText != null) {
        ((EditText) editText).setTextColor(ContextCompat.getColor(MyCommandReceiver.context_settings, R.color.THEME_LIGHT_TEXT));
        ((EditText) editText).setTypeface(customFont);
    }

    //OK button
    final View okButton = window.findViewById(android.R.id.button1);
    if (okButton != null) {
        ((Button) okButton).setTextColor(ContextCompat.getColor(MyCommandReceiver.context_settings, R.color.THEME_LIGHT_TEXT));
        ((Button) okButton).setTypeface(customFont);
    }

    //Cancel button
    final View cancelButton = window.findViewById(android.R.id.button2);
    if (cancelButton != null) {
        ((Button) cancelButton).setTextColor(ContextCompat.getColor(MyCommandReceiver.context_settings, R.color.THEME_LIGHT_TEXT));
        ((Button) cancelButton).setTypeface(customFont);
    }
}

这篇关于更改EditTextPreference对话框输入的文本颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-30 22:46