我目前的任务是将用户界面从平板电脑设备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>
任何有助于我正确扩展用户界面的帮助提示或资源都将非常感激。谢谢。
答案 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>
,没有任何好处。