代码之家  ›  专栏  ›  技术社区  ›  KisnardOnline

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

  •  0
  • KisnardOnline  · 技术社区  · 7 年前

    我可以更改编辑文本首选项的标题和摘要颜色。当你点击它时,我的背景是黑色的,按钮是白色的。我仍然需要弄清楚如何更改实际值文本。有什么想法吗?

    如果我也能改变那条线的颜色就太好了。

    enter image description here

    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>
    
    3 回复  |  直到 7 年前
        1
  •  0
  •   Yomesh Mistri    7 年前
    <android.support.design.widget.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
    
                <EditText
                    android:id="@+id/password"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/prompt_password"
                    android:imeActionId="6"
                    android:textColor="@color/white"
                    android:textColorHint="@color/white"
                    android:imeActionLabel="@string/action_sign_in_short"
                    android:imeOptions="actionUnspecified"
                    android:inputType="textPassword"
                    android:maxLines="1"
                    android:singleLine="true" />
    
            </android.support.design.widget.TextInputLayout>
    
        2
  •  0
  •   prashant17 OzanTabakoglu    7 年前

    试试这个:

    <style name="JayPreferenceThemeDialog" parent="Theme.AppCompat.Light.Dialog">
            <item name="colorAccent">@color/colorAccent</item> //line color
            <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>
    
        3
  •  0
  •   KisnardOnline    7 年前

    从热心分享的链接: 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);
        }
    }
    
    推荐文章