我有一个编辑文本布局如下所示,我想知道,有没有办法根据屏幕尺寸为不同的硬件提供不同的尺寸?对于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"
/>
答案 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等)桶文件夹。
旧的(正确但不是很好)答案
执行此操作的两种方法:
从XML中删除定义并以编程方式设置文本大小
((EditText) findViewById(R.id.entry)).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 40)
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
对于较小的设备保持不变,并且使用当前主题的默认值。