说到这个真的苦逼,我最后悔的是使用官方主题 的样式进行修改,然后尝试让变色变成文字颜色,结果是很多地方的文字看不到了,各种各样的样式都要进行修改,整个app,总是有很多地方文字不显示。
这个项目是《情迁工具箱》
老版本会有很多地方的文字不见了,这是因为文字的颜色 通过全局控制会导致产生弊端,导致某些地方冲突,所以必须针对性的改,不知道改了多少,而且不同版本还不一样,今天有发现一个bug,语音设置的对话框的文字不显示了,大概是变成白色了,这地方应该是黑色才对。
DialogPreference
的布局是preference_dialog_edittext.xml
知道了里面的id,就自然知道修改这里面的编辑框样式等了。
···
protected void onAddEditTextToDialogView(View dialogView, EditText editText) {
ViewGroup container = (ViewGroup) dialogView
.findViewById(com.android.internal.R.id.edittext_container);
if (container != null) {
container.addView(editText, ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
}
}
···
image.png
修改确定键和取消键文字样式。
最后结果
package cn.qssq666.systool.ui;标签:ViewGroup,container,子类,输入框,button1,import,android,View,DialogPreference From: https://blog.51cto.com/u_15458814/5882976
import android.app.AlertDialog;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import cn.qssq666.systool.global.AppContext;
/**
* Created by qssq on 2018/9/23 [email protected]
*/
public class MyEditTextPreference extends EditTextPreference {
private static final String TAG = "MyEditPreference";
public MyEditTextPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public MyEditTextPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyEditTextPreference(Context context) {
super(context);
}
@Override
protected void showDialog(Bundle state) {
super.showDialog(state);
//id/button2 button1 确定
View button1 = getDialog().getWindow().getDecorView().findViewById(android.R.id.button1);
// View button1 = getDialog().getWindow().getDecorView().findViewById(ResourcesUtil.getId(AppContext.getInstance(), "button1"));
if (button1 != null) {
((TextView) button1).setTextColor(Color.WHITE);
}
View button2 = getDialog().getWindow().getDecorView().findViewById(android.R.id.button2);
// View button2 = getDialog().getWindow().getDecorView().findViewById(ResourcesUtil.getId(AppContext.getInstance(), "button1"));
if (button2 != null) {
((TextView) button2).setTextColor(Color.WHITE);
}
}
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
}
protected void onAddEditTextToDialogView(View dialogView, EditText editText) {
super.onAddEditTextToDialogView(dialogView, editText);
editText.setTextColor(Color.BLACK);
/* int edittext_container = ResourcesUtil.getId(dialogView.getContext(), "edittext_container");
//
ViewGroup container = (ViewGroup) dialogView.findViewById(edittext_container);
if (container != null) {
container.addView(editText, ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
}*/
}
@Override
protected View onCreateDialogView() {
View view = super.onCreateDialogView();
int dialogLayoutResource = getDialogLayoutResource();
// DialogPreference.class.getDeclaredMethod("")
String resourceEntryName = AppContext.getInstance().getResources().getResourceEntryName(dialogLayoutResource);
Log.w(TAG, "name " + resourceEntryName);
return view;
}
}