使用AlertDialog.Builder.setView
我将显示如下自定义对话框:
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setView(getLayoutInflater().inflate(R.layout.custom_dialog, null))
.setTitle(getResources().getString(R.string.custom_dialog_title))
.setMessage(getResources().getString(R.string.custom_dialog_prompt))
// ...
.create();
alertDialog.show();
让custom_dialog
只是一个简单的布局(只是一个例子):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="?dialogPreferredPadding"
android:paddingEnd="?dialogPreferredPadding"
android:orientation="vertical">
<CheckBox
style="?android:attr/textAppearance"
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/custom_dialog_checkbox" />
</LinearLayout>
我的CheckBox
现在使用默认文字大小,因为没有明确指定android:textSize
。
默认AlertDialog.Builder.setMessage
文字的字体大小与默认的CheckBox
字体大小不同。设置CheckBox
的大小以匹配setMessage
文字的字体大小的正确方法是什么?
正如您在我的示例中所看到的,我使用系统属性?dialogPreferredPadding
进行对话框填充。对话框消息字体大小是否有类似的属性?
答案 0 :(得分:0)
由于我无法找到确定系统对话框消息文本大小的直接方法,因此我实施了一种解决方法......
在调用alertDialog.show();
之前,设置/添加了OnShowListener
:
alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog)
{
float textSize = 0;
int messageId = getResources().getIdentifier("message", "id", "android");
if (messageId > 0)
{
View view = ((AlertDialog) dialog).findViewById(messageId);
if (view != null)
textSize = ((TextView) view).getTextSize();
}
CheckBox checkbox = ((AlertDialog) dialog).findViewById(R.id.checkbox);
if (checkbox != null)
{
if (textSize > 0)
checkbox.setTextSize(TypedValue.COMPLEX_UNIT_PX, (int) textSize);
}
}
});