Android文字在Nexus 6上无法正确缩放

时间:2015-01-28 13:16:32

标签: java android xml

我目前的任务是将用户界面从平板电脑设备Nexus 7扩展到手机设备Nexus 6.

我已阅读以下资源和信息:http://developer.android.com/guide/practices/screens_support.html

我从中获取的是我需要在整个系统中使用DP和SP进行各种形式的缩放或缩放,我很高兴地意识到我已经有了这个系统,但是当我去了将它加载到Nexus 6上我发现字体大小没有缩放,因为我期望在纵向上,但在横向设备中,设备似乎可以按预期进行缩放和显示。

表格布局的片段/上面显示的按钮行

<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingLeft="20dp"
    android:paddingRight="20dp"
    android:stretchColumns="*" >

    <TableRow
        android:paddingBottom="20dp"
        android:paddingTop="20dp" >

        <Button
            android:id="@+id/H_btnWork"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_marginRight="10dp"
            android:layout_weight="0.333"
            android:background="#ffc837"
            android:gravity="center_vertical|center_horizontal"
            android:height="100dp"
            android:maxHeight="100dp"
            android:minHeight="100dp"
            android:paddingRight="5dp"
            android:text="Scheduled Work"
            android:textSize="20sp" />

        <Button
            android:id="@+id/H_btnDaywork"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_marginRight="10dp"
            android:layout_weight="0.333"
            android:background="#ffc837"
            android:gravity="center_vertical|center_horizontal"
            android:height="100dp"
            android:maxHeight="100dp"
            android:minHeight="100dp"
            android:paddingLeft="5dp"
            android:paddingRight="5dp"
            android:text="Scheduled Attendance"
            android:textSize="20sp"/>

        <Button
            android:id="@+id/H_btnVariation"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:layout_marginRight="10dp"
            android:layout_weight="0.333"
            android:background="#ffc837"
            android:gravity="center_vertical|center_horizontal"
            android:height="100dp"
            android:maxHeight="100dp"
            android:minHeight="100dp"
            android:paddingRight="5dp"
            android:text="Variations"
            android:textSize="20sp"
            android:visibility="visible" />
    </TableRow>

AndroidManifest.xml提取

<compatible-screens>
    <!--no small size screens -->


    <!--all normal size screens -->
    <screen android:screenSize="normal" android:screenDensity="ldpi" />
    <screen android:screenSize="normal" android:screenDensity="mdpi" />
    <screen android:screenSize="normal" android:screenDensity="hdpi" />
    <screen android:screenSize="normal" android:screenDensity="xhdpi" />
     <screen android:screenSize="normal" android:screenDensity="560" />

    <!-- all large size screens -->
    <screen android:screenSize="large" android:screenDensity="ldpi" />
    <screen android:screenSize="large" android:screenDensity="mdpi" />
    <screen android:screenSize="large" android:screenDensity="hdpi" />
    <screen android:screenSize="large" android:screenDensity="xhdpi" />
     <screen android:screenSize="large" android:screenDensity="560" />

    <!-- all xlarge size screens -->
    <screen android:screenSize="xlarge" android:screenDensity="ldpi" />
    <screen android:screenSize="xlarge" android:screenDensity="mdpi" />
    <screen android:screenSize="xlarge" android:screenDensity="hdpi" />
    <screen android:screenSize="xlarge" android:screenDensity="xhdpi" />
    <screen android:screenSize="xlarge" android:screenDensity="560" />

    <!-- Special case for Nexus 7 -->
    <!-- <screen android:screenSize="large" android:screenDensity="213" />-->

    </compatible-screens>

任何有助于我正确扩展用户界面的帮助提示或资源都将非常感激。谢谢。

1 个答案:

答案 0 :(得分:1)

如果您需要单独微调尺寸,最佳做法是提取尺寸以分开/values/dimen.xml

所以您可以更改以下所有按钮:

android:textSize="20sp"

android:textSize="@dimen/text_size"

然后你需要尽可能多的dimen.xml文件:

/values/dimen.xml这是默认

<?xml version='1.0' encoding='UTF-8'?>
<resources>
   <dimen name="text_size">20sp</dimen>
</resources>

/values-sw600dp/dimen.xml这是在平板电脑上使用

<?xml version='1.0' encoding='UTF-8'?>
<resources>
   <dimen name="text_size">22sp</dimen>
</resources>

/values-land/dimen.xml这用于横向

<?xml version='1.0' encoding='UTF-8'?>
<resources>
   <dimen name="text_size">18sp</dimen>
</resources>

/values-sw600dp-land/dimen.xml这用于平板电脑风景

<?xml version='1.0' encoding='UTF-8'?>
<resources>
   <dimen name="text_size">20sp</dimen>
</resources>

重要说明:

  • 您不必执行所有这些文件,只需添加需要更改的文件即可。例如,横向平板电脑,如果没有sw600dp-land则系统将从sw600dp中选择,如果sw600dp不存在,那么它将从land获取,如果没有不存在它来自默认值。重要的是始终有默认值。

  • 从您的清单中删除<compatible-screens>,没有任何好处。