如何更改对话框首选项消息的文本大小?
How to change text size of dialog preference message?
我有一个扩展 EditTextPreference
的 class,我在自己的布局中使用它,例如:
<com.app.MyEditTextPreference
android:key="@string/key"
android:title="@string/title"
android:summary="@string/summary"
android:dialogTitle="@string/title"
android:dialogMessage="@string/message"
android:layout="@layout/preference_edittext"/>
我的应用主题继承自 Theme.AppCompat.Light.DarkActionBar
,我更改了文本大小的值:
<style name="TextAppearance.Small">
<item name="android:textSize">18sp</item> <!-- was 14sp -->
</style>
但是,当显示首选项对话框时,消息的大小与我在样式中定义的大小不同。
那么如何正确设置对话消息的文字大小呢?
编辑
我从 sdk 复制了对话框布局:
<LinearLayout
android:id="@+android:id/edittext_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp"
android:orientation="vertical">
<TextView
android:id="@android:id/message"
android:layout_marginBottom="48dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="4dp"
android:paddingEnd="4dp"
android:textColor="?android:attr/textColorSecondary"
style="@style/TextAppearance.Small" />
</LinearLayout>
但是,我在 android:id="@+android:id/edittext_container"
.
行收到构建错误 Resource is not public
如果我将其更改为 "@*android:id/edittext_container"
,编辑文本将不再可见。
有没有更简单的方法来更改消息的文本大小?
首先在布局文件夹中创建新的 xml 文件名 cus.xml。
它需要在运行时设置对话框的视图。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enter Name :"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="18dp" />
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="18dp" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:textSize="18dp" />
根据需要对话:
这是对话代码:
Dialog d=new Dialog(getActivity());
d.setTitle("Image Title");
d.setContentView(R.layout.cus);
d.show();
我终于通过以下方式更改了消息文本大小:
a) 将 LinearLayout
的 ID 更改为:@+id/edittext_container
,以及
b) 在我的 class 中添加以下代码扩展 EditTextPreference
:
@Override
protected void onAddEditTextToDialogView(View dialogView, EditText editText) {
ViewGroup container = (ViewGroup) dialogView
.findViewById(R.id.edittext_container);
if (container != null) {
container.addView(editText, ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
}
}
这很好用,显然是一个有效的答案,但是更简单的解决方案是通过主题更改消息文本大小。
我有一个扩展 EditTextPreference
的 class,我在自己的布局中使用它,例如:
<com.app.MyEditTextPreference
android:key="@string/key"
android:title="@string/title"
android:summary="@string/summary"
android:dialogTitle="@string/title"
android:dialogMessage="@string/message"
android:layout="@layout/preference_edittext"/>
我的应用主题继承自 Theme.AppCompat.Light.DarkActionBar
,我更改了文本大小的值:
<style name="TextAppearance.Small">
<item name="android:textSize">18sp</item> <!-- was 14sp -->
</style>
但是,当显示首选项对话框时,消息的大小与我在样式中定义的大小不同。
那么如何正确设置对话消息的文字大小呢?
编辑
我从 sdk 复制了对话框布局:
<LinearLayout
android:id="@+android:id/edittext_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp"
android:orientation="vertical">
<TextView
android:id="@android:id/message"
android:layout_marginBottom="48dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="4dp"
android:paddingEnd="4dp"
android:textColor="?android:attr/textColorSecondary"
style="@style/TextAppearance.Small" />
</LinearLayout>
但是,我在 android:id="@+android:id/edittext_container"
.
Resource is not public
如果我将其更改为 "@*android:id/edittext_container"
,编辑文本将不再可见。
有没有更简单的方法来更改消息的文本大小?
首先在布局文件夹中创建新的 xml 文件名 cus.xml。 它需要在运行时设置对话框的视图。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enter Name :"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="18dp" />
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="18dp" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:textSize="18dp" />
根据需要对话: 这是对话代码:
Dialog d=new Dialog(getActivity());
d.setTitle("Image Title");
d.setContentView(R.layout.cus);
d.show();
我终于通过以下方式更改了消息文本大小:
a) 将 LinearLayout
的 ID 更改为:@+id/edittext_container
,以及
b) 在我的 class 中添加以下代码扩展 EditTextPreference
:
@Override
protected void onAddEditTextToDialogView(View dialogView, EditText editText) {
ViewGroup container = (ViewGroup) dialogView
.findViewById(R.id.edittext_container);
if (container != null) {
container.addView(editText, ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
}
}
这很好用,显然是一个有效的答案,但是更简单的解决方案是通过主题更改消息文本大小。