首页 > 其他分享 >DialogPreference的子类输入框弹出的样式修改

DialogPreference的子类输入框弹出的样式修改

时间:2022-11-24 11:32:22浏览次数:51  
标签:ViewGroup container 子类 输入框 button1 import android View DialogPreference


说到这个真的苦逼,我最后悔的是使用官方主题 的样式进行修改,然后尝试让变色变成文字颜色,结果是很多地方的文字看不到了,各种各样的样式都要进行修改,整个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);
}
}
···




DialogPreference的子类输入框弹出的样式修改_react native


image.png


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

最后结果

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;

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

标签:ViewGroup,container,子类,输入框,button1,import,android,View,DialogPreference
From: https://blog.51cto.com/u_15458814/5882976

相关文章