更改 EditTextPreference 对话框输入文本颜色
Change EditTextPreference dialog input text color
我可以更改编辑文本首选项的标题和摘要颜色。当你点击它时,我的背景是黑色的,按钮是白色的。我仍然需要弄清楚如何更改实际值文本。有什么想法吗?
如果我也能改变那条线的颜色就好了。
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>
<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>
试试这个:
<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>
来自link热心分享: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);
}
}
我可以更改编辑文本首选项的标题和摘要颜色。当你点击它时,我的背景是黑色的,按钮是白色的。我仍然需要弄清楚如何更改实际值文本。有什么想法吗?
如果我也能改变那条线的颜色就好了。
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>
<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>
试试这个:
<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>
来自link热心分享: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);
}
}