如何更改对话框首选项消息的文本大小?

时间:2015-12-14 08:33:49

标签: android preferences

我有一个扩展EditTextPreference的类,我在自己的布局中使用它,例如:

    <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>

但是,我在行Resource is not public上收到了构建错误android:id="@+android:id/edittext_container"

如果我将其更改为"@*android:id/edittext_container",则编辑文本将不再可见。

是否有更简单的方法来更改消息的文本大小?

2 个答案:

答案 0 :(得分:0)

首先在布局文件夹中创建新的xml文件名cus.xml。 它需要在运行时设置对话框的视图。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.example.volleynoapache"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
}

当你需要对话时: 这是对话框代码:

<?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" />

答案 1 :(得分:0)

我终于设法通过以下方式更改消息文本大小:

a)将LinearLayout的ID更改为:@+id/edittext_container

b)在我的课程中添加以下代码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);
    }
}

这很好用,显然是一个有效的答案,但更简单的解决方案是通过主题更改消息文本大小。