简书链接:DialogPreference的子类输入框弹出的样式修改
文章字数:337,阅读全文大约需要1分钟
说到这个真的苦逼,我最后悔的是使用官方主题 的样式进行修改,然后尝试让变色变成文字颜色,结果是很多地方的文字看不到了,各种各样的样式都要进行修改,整个app,总是有很多地方文字不显示。
这个项目是《情迁工具箱》老版本会有很多地方的文字不见了,这是因为文字的颜色 通过全局控制会导致产生弊端,导致某些地方冲突,所以必须针对性的改,不知道改了多少,而且不同版本还不一样,今天有发现一个bug,语音设置的对话框的文字不显示了,大概是变成白色了,这地方应该是黑色才对。

知道了里面的id,就自然知道修改这里面的编辑框样式等了。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
···
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](https://upload-images.jianshu.io/upload_images/2815884-9fc5af45ff8e4471.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

修改确定键和取消键文字样式。


最后结果

package cn.qssq666.systool.ui;

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;

/**

*/
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;
}

}