Android支持实际设备上的多屏幕问题

时间:2014-07-09 17:42:02

标签: android layout

我正在Android中创建一个应该支持多个屏幕的应用程序,并且我已经实现了支持多屏幕的技术,如下所示: - 为 small,normal,large和xlarge 创建了layouts文件夹 - 为 drawable-hdpi,drawable-ldpi,drawable-mdpi和drawable-xhdpi 提供图像 - 在应用清单中添加了以下代码:

<supports-screens
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:xlargeScreens="true"
    android:anyDensity="true"  />

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="17" />

并调整了布局编辑器输入,如下图所示

layout issue

问题是这些布局在真实设备上运行不正常 元素大于或小于其边距有时大于或小于布局编辑器预览

布局示例          

    <Button
        android:id="@+id/btn_refresh"
        android:layout_width="35dp"
        android:layout_height="50dp"
        android:layout_marginLeft="60dp"
        android:background="@color/transparent"
        android:onClick="refreshBtnAction" />

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="280dp"
        android:layout_marginTop="85dp"
        android:layout_marginRight="19dp"
        android:layout_marginLeft="15dp"
        android:divider="#E9CE9A"
        android:fadingEdge="none"
        android:dividerHeight="1dp" />

</RelativeLayout>

如果您能解释我应该做些什么以确保布局在真实设备上正常工作,请将不胜感激 提前致谢

1 个答案:

答案 0 :(得分:0)

我发现最好使用sp而不是dp,并使用预定义的宽度&amp;高峰,只要你能。我指的是像android这样的东西:layoutWidth =&#34; match_parent&#34;并使用LayoutWeigt。以下示例使得2个按钮始终为80%和20%,无论屏幕分辨率如何(请参阅属性weightSum和layout_weight):

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="100"
    >


    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/bResults"
        android:text="Try Command"
        android:layout_weight="20" />

    <ToggleButton
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tbPassword"
        android:layout_weight="80"
        android:checked="true"
        />

</LinearLayout>

这样您就不需要任何&#34;布局文件夹&#34;,只需要用于不同图像分辨率的文件夹。我不确定你使用什么编辑器但是使用Android Studio或Eclipse这些文件夹通常会自动构建。写&#34; sp&#34;你有...&#34; dp&#34;,这也有帮助。在使用给定的建议时,我从未遇到过这个问题。我的应用程序在3.7英寸上看起来与Nexus 10相同。