字体大小不适应不同的屏幕大小

时间:2012-07-12 14:20:36

标签: java android xml eclipse

我已经通过使用“match_parent”和“wrap_content”,以及“sp”和“dp”以及相对布局阅读了有关支持不同屏幕尺寸的Android文章。我已经实现了所有这些建议,但是当我在Eclipse的XML编辑器中更改屏幕大小时,平板电脑,TextViews和Buttons的字体大小似乎根本没有变化以适应更大的屏幕尺寸。较小的屏幕(例如3.2英寸)也是如此。有没有人有任何建议?

3 个答案:

答案 0 :(得分:3)

从@ CSmith的答案中大量借用(但不想编辑他的答案,因为它有效):

在布局中:

<TextView
 android:id="@+id/yourID"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="My String"
 style="@style/myStyle"
/> 

值/ styles.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<resources>
 <style name="myStyle">
  <item name="android:textStyle">bold</item> 
  <item name="android:textColor">#FFFFFFFF</item> 
  <item name="android:textSize">@dimen/my_textsize</item> 
  <item name="android:shadowColor">#FF000000</item> 
  <item name="android:shadowDx">1</item> 
  <item name="android:shadowDy">-1</item> 
  <item name="android:shadowRadius">1</item> 
 </style>
</resources>

值/ dimens.xml

<resources>    
    <dimen name="my_textsize">14sp</dimen>
</resources>

值-XLARGE / dimens.xml

<resources>    
    <dimen name="my_textsize">20sp</dimen>
</resources>

这将在普通设备上提供14sp字体,在x-large设备上提供20sp,并减少单独XML文件中的重复,因为唯一改变的是字体大小。

你可以将任何将作为sp / dp维度的东西放在dimens.xml文件中作为。

答案 1 :(得分:2)

在布局中:

<TextView android:id="@+id/yourID" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="My String" style="@style/myStyle" /> 

值/ styles.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<resources>
 <style name="myStyle">
  <item name="android:textStyle">bold</item> 
  <item name="android:textColor">#FFFFFFFF</item> 
  <item name="android:textSize">14sp</item> 
  <item name="android:shadowColor">#FF000000</item> 
  <item name="android:shadowDx">1</item> 
  <item name="android:shadowDy">-1</item> 
  <item name="android:shadowRadius">1</item> 
 </style>
</resources>

值-XLARGE / styles.xml:

<?xml version="1.0" encoding="utf-8" ?> 
<resources>
 <style name="myStyle">
  <item name="android:textStyle">bold</item> 
  <item name="android:textColor">#FFFFFFFF</item> 
  <item name="android:textSize">20sp</item> 
  <item name="android:shadowColor">#FF000000</item> 
  <item name="android:shadowDx">1</item> 
  <item name="android:shadowDy">-1</item> 
  <item name="android:shadowRadius">1</item> 
 </style>
</resources>

这将为您提供普通设备上的14sp字体,x-large设备上的20sp

答案 2 :(得分:1)

使用与密度无关的单位,例如'sp'和'dp',无论屏幕如何,从用户的角度来看,文本大小实际上都是相同的。

因此,当您在XML编辑器中更改屏幕时,显示的屏幕区域会更改,但文本大小保持不变。