布局在设备上看起来不同

时间:2014-05-22 12:21:18

标签: android android-layout fonts textview

我的硬件:

  • Google Glass(屏幕密度= 1.5,分辨率640 * 360px)

  • Vuzix M100(屏幕密度= 0.75,分辨率432 * 244px)

以下是我在Google Glass上的布局:

enter image description here

和Vuzix:

enter image description here

布局来源:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ll_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="@dimen/activity_margin"
    android:baselineAligned="false"
    android:orientation="horizontal" >

    <FrameLayout
        android:id="@+id/content_secondary"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="2" 
        android:paddingRight="@dimen/layout_padding">
    </FrameLayout>

    <View
        android:layout_width="@dimen/separator_width"
        android:layout_height="match_parent"
        android:layout_marginBottom="@dimen/separator_margin_bottom"
        android:layout_marginTop="@dimen/separator_margin_top"
        android:background="@android:color/darker_gray" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/tv_instructions"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:text="@string/instruction_sign_in"
            android:textSize="@dimen/instructions_text_size" />

        <FrameLayout
            android:id="@+id/content_primary"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingLeft="@dimen/container_primary_padding_left" >
        </FrameLayout>
    </LinearLayout>

<dimen name="activity_margin">1dp</dimen>
<dimen name="separator_width">1dp</dimen>
<dimen name="separator_margin_top">30dp</dimen>
<dimen name="separator_margin_bottom">30dp</dimen>
<dimen name="instructions_text_size">20sp</dimen>
<dimen name="layout_padding">3dp</dimen>
<dimen name="medium_text_size">30sp</dimen>
<dimen name="small_text_size">22sp</dimen>
<dimen name="almost_large_text_size">50sp</dimen>
<dimen name="large_text_size">60sp</dimen>
<dimen name="huge_text_size">100sp</dimen>
<dimen name="container_primary_padding_left">10dp</dimen>

正确布局部分的来源:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp">

    <TextView
        android:layout_below="@id/tv_row_label"
        android:id="@+id/tv_destination"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="AA"
        android:textSize="@dimen/huge_text_size" />

</RelativeLayout>

如您所见,所有值都与密度无关。但布局仍然看起来不同。可能是什么问题?

1 个答案:

答案 0 :(得分:1)

问题是您的设备具有不同的物理尺寸。由于屏幕被投影,这可能不可见,但这是唯一可能的原因。

与密度无关意味着您的小部件在不同的屏幕密度之间共享相同的物理大小。无论是hdpi还是ldpi设备,你想要的XX dp大小在任何设备上都是YY cm。

现在,由于您的设备物理尺寸不同,因此您在一个设备上的小部件之间会看到更大的空间,因为它的屏幕更大。虽然小部件的物理尺寸与其他设备相同,但剩下的空间更多。

一种解决方案是使用TextView自动调整可用空间的文字大小,例如this one