2015-12-14 179 views
4

我有一个扩展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> 

但是,我上线android:id="@+android:id/edittext_container"得到生成错误Resource is not public

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

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

回答

0

我终于设法通过改变邮件文字大小:

a)改变的标识LinearLayout至:@+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); 
    } 
} 

这工作正常,显然是一个有效的答案,但是一个简单的解决方案是只通过更换主题皮肤改变邮件文字大小。

0

首先在布局文件夹中创建新的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(); 
相关问题