不同文本大小适用于不同硬件

时间:2011-08-03 13:45:24

标签: android

我有一个编辑文本布局如下所示,我想知道,有没有办法根据屏幕尺寸为不同的硬件提供不同的尺寸?对于4英寸以下的屏幕,我想给出以下布局

 <EditText
    android:id="@+id/entry"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:drawable/editbox_background"
    android:textColor="#800080"
    android:text=""
    android:hint=" No Operator Precednce yet"
    android:cursorVisible="false" 
    android:textSize="40dip"

 />

然后是其他人

 <EditText
    android:id="@+id/entry"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:drawable/editbox_background"
    android:textColor="#800080"
    android:text=""
    android:hint=" No Operator Precednce yet"
    android:cursorVisible="false" 
    android:textSize="30dip"

 />

3 个答案:

答案 0 :(得分:40)

在/ res中为

创建文件夹
  

布局

     

布局小

     

布局正常

     

布局大

     

布局XLARGE

然后为每个布局创建一个布局文件,android将在运行时选择正确的布局文件。 所以你可以改变每个屏幕尺寸的完整布局。

如果您真的只想设置大小,可以创建此文件夹

  

     

值小

     

值正常

     

值-大

     

值-XLARGE

然后在每个文件夹中放置一个dimen.xml,如下所示:

  

<?xml version="1.0" encoding="utf-8"?>

     

<resources>

     

<dimen name="textSizeLarge">22dp</dimen>

     

</resources>

只需更改每个xml文件中的值(22dp)。

然后用

替换你的值
  

android:textSize="@dimen/textSizeXtraSmall"

非常好的文档: http://developer.android.com/guide/practices/screens_support.html

答案 1 :(得分:2)

编辑 - 这样做的最佳方法是将文本大小定义为一个维度,并根据您所针对的硬件来改变大小,方法是在您的不同dpi(ldpi,mdpi,)中的dimens.xml文件中放入不同的值hdpi等)桶文件夹。

旧的(正确但不是很好)答案

执行此操作的两种方法:

  1. 从XML中删除定义并以编程方式设置文本大小

    ((EditText) findViewById(R.id.entry)).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 40)
    
  2. implement different layouts for the different screen sizes - 这将涉及为您在应用程序中支持的每种不同屏幕尺寸编写新的xml布局。

答案 2 :(得分:2)

如果以配置相关的方式使用<dimen>,则将覆盖所有设备的默认大小(22dp表示较小,40dp表示较大的设备)。如果您希望将textSize保留为较小设备的默认设置,并且仅覆盖较大设备,则可以使用样式:

RES /值/ styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="EditText" />      

</resources>

RES /值-大/ styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="EditText" >
      <item name="android:textSize">40sp</item>
    </style>    
</resources>

在布局中:

<TextView style="@style/EditText" ...  />

这种方式textSize对于较小的设备保持不变,并且使用当前主题的默认值。