【问题标题】:How can I make the Text Size adapt to different sized devices/linear layouts in Android如何使文本大小适应 Android 中不同大小的设备/线性布局
【发布时间】:2013-07-23 19:03:05
【问题描述】:

我目前正在研究一个布局文件,该文件可以适应不同尺寸的 android 设备。到目前为止,我已经取得了一些成功。使用“layout_weight”我已经能够制作一个线性布局来占用布局中一定比例的空间。这意味着显示器可以拉伸以覆盖整个屏幕,无论是 2'7 英寸屏幕还是 10'1 英寸屏幕。 但是,我在顶部的线性布局中遇到了文本大小问题。如何使 TextSize 适应大型或小型设备? 这是我的代码。

 <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:baselineAligned="false"
          android:weightSum="1.0"
          android:background="#ff0000"
          >
      <LinearLayout
          android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="0dip"
          android:layout_weight="0.25"
          android:weightSum="1.0">

     <TextView
        android:id="@+id/textView1"

        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="medium"
        android:textSize="30sp"
        android:layout_weight="1"

        android:textAppearance="?android:attr/textAppearanceLarge" />

     </LinearLayout>

     <LinearLayout
          android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="0dip"
          android:layout_weight="0.25"
          android:weightSum="1.0">        
         <ImageView 
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:src="@drawable/sample_1"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.25"
        />

        <ImageView 
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:src="@drawable/sample_2"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.25"
        />

        <ImageView 
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:src="@drawable/sample_3"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.25"
        />

        <ImageView 
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:src="@drawable/sample_4"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.25"
        />
     </LinearLayout>

     <LinearLayout
         android:orientation="horizontal"
         android:layout_width="fill_parent"
         android:layout_height="0dip"
         android:layout_weight="0.25"
         android:weightSum="1.0">        
           <ImageView 
               android:layout_width="0dip"
               android:layout_height="fill_parent"
               android:src="@drawable/sample_1"
               android:layout_gravity="center_horizontal"
               android:layout_weight="0.25"
           />

        <ImageView 
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:src="@drawable/sample_2"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.25"
        />

        <ImageView 
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:src="@drawable/sample_3"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.25"
        />

        <ImageView 
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:src="@drawable/sample_4"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.25"
        />
     </LinearLayout>
     <LinearLayout
      android:orientation="horizontal"
      android:layout_width="fill_parent"
      android:layout_height="0dip"
      android:layout_weight="0.25"
      android:weightSum="1.0">        
        <ImageView 
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:src="@drawable/sample_1"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.25"
        />

        <ImageView 
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:src="@drawable/sample_2"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.25"
        />

        <ImageView 
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:src="@drawable/sample_3"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.25"
        />

        <ImageView 
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:src="@drawable/sample_4"
            android:layout_gravity="center_horizontal"
            android:layout_weight="0.25"
               />
      </LinearLayout>
      </LinearLayout>

【问题讨论】:

    标签: android screen-size text-size


    【解决方案1】:

    在 res 文件夹中创建不同的文件夹,如 values-ldpi, values-mdpi, values-hdpi, values-xhdpi

    在这些文件夹中创建 dimens.xml 文件

    应该是

    res/values-ldpi/dimens.xml
    res/values-mdpi/dimens.xml
    res/values-hdpi/dimens.xml
    

    比定义不同的尺寸为你的TextView inside dimens.xml

    【讨论】:

    • 感谢您的提示。有些人确实会为不同的设备尺寸设置不同的布局文件,但我只是想让显示像网格一样伸展。除非无法使用线性布局扩展文本,否则我想保持这种格式(使用 layout_weight)。
    • @RobCarrigan 你使用布局权重非常好:) 我的回答可以实现不同的 textview 大小!
    【解决方案2】:

    利用各个文件夹中的value.xml(ldpi,mdpi,hdpi)

    【讨论】:

      猜你喜欢
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 2017-03-23
      • 2018-11-24
      • 2015-01-18
      相关资源
      最近更新 更多