2

我正在 android 上开发我的第一个应用程序,我认为我的应用程序满足支持多个屏幕所需的要求(仅使用 dp 或 sp 等)。

但是,似乎我做错了什么。Textviews 在屏幕底部重叠。

现在...我是否写了错误的 xml 或者我是否需要为每个 android 版本添加不同的布局,以确保避免此类问题?

第一个设备规格(docomo ARROWS NX F-06E)1080×1920 px,16,777,216 色第一个设备屏幕截图:

http://s15.postimg.org/r8tp0oay3/Screenshot_2013_08_19_22_08_33.png

第二个设备规格(LG L-07C Optimus)480 x 800 像素,256K 色第二个设备屏幕截图: http://s22.postimg.org/xkqbne74h/i001.jpg

这是xml代码。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/dark_green"
android:orientation="vertical"
 >

<ImageView
 android:id="@+id/image"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentLeft="true"
 android:layout_marginTop="5dp"
 android:src="@drawable/sakai" />

<TextView
android:id="@+id/random_field"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="false"
android:layout_alignParentRight="false"
android:layout_alignTop="@id/image"
android:layout_toLeftOf="@+id/chronometer"
android:layout_toRightOf="@id/image"
android:background="@drawable/bubble_bl"
android:text="@string/index"
android:textSize="20.5sp" />

<Chronometer android:id="@+id/chronometer"
 android:format="@string/chronometer_initial_format"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentRight="true"
 android:layout_marginRight="0dip"
 android:layout_weight="0.5"
 android:paddingBottom="30dip"
 android:paddingTop="30dip"
 />
 <Button
 android:layout_below="@id/image"
 android:id="@+id/askquestion"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="@string/ask"
 style="@style/ButtonText" 
 android:background="@drawable/btn_blue_states" 
 />
 <Button
  android:layout_below="@id/askquestion"
  android:id="@+id/answer1"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="@string/ask" 
  style="@style/ButtonText" 
  android:background="@drawable/btn_blue_states"/>
  <Button
  android:layout_below="@id/answer1"
  android:id="@+id/answer2"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="@string/ask" 
  style="@style/ButtonText" 
  android:background="@drawable/btn_blue_states"/>
  <Button
  android:id="@+id/answer3"
  android:layout_below="@id/answer2"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="@string/ask"
  style="@style/ButtonText" 
  android:background="@drawable/btn_blue_states" />
  <Button
  android:id="@+id/answer4"
  android:layout_below="@id/answer3"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="@string/ask" 
  style="@style/ButtonText" 
  android:background="@drawable/btn_blue_states"/>
  <TextView
  android:id="@+id/score_field"
  android:layout_below="@id/answer4"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:layout_marginBottom="5dip"
  android:gravity="center"
  android:text="@string/score"
  android:textSize="24.5sp" 
  /> 
  <TextView
  android:id="@+id/performance_field"
  android:layout_below="@id/score_field"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:gravity="center"
  android:textSize="24.5sp" 
  />

  <LinearLayout android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical" android:layout_alignParentBottom="true"
  android:weightSum="4.0" >
<TextView
  android:id="@+id/difficult_textview"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:gravity="center"
  android:text="@string/difficulty"
  android:textSize="24.5sp" 
  />
  <LinearLayout android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:id="@+id/linearLayoutWithButtons"
  android:orientation="horizontal" 
  android:weightSum="4.0" >

  <Button
  android:id="@+id/diff1"
  style="@style/ButtonText"
  android:layout_weight="1.0"
  android:layout_height="wrap_content"
  android:background="@drawable/btn_blue_states"
  android:text="@string/one" />
      <Button
      android:id="@+id/diff2"
      style="@style/ButtonText"
      android:layout_weight="1.0"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:background="@drawable/btn_blue_states"
      android:text="@string/two" />
      <Button
      android:id="@+id/diff3"
      style="@style/ButtonText"
      android:layout_weight="1.0"
      android:layout_height="wrap_content"
      android:background="@drawable/btn_blue_states"
      android:text="@string/three" />
      <Button
      android:id="@+id/diff4"
      style="@style/ButtonText"
      android:layout_weight="1.0"
      android:layout_height="wrap_content"
      android:background="@drawable/btn_blue_states"
      android:text="@string/four" />

  </LinearLayout>

  </LinearLayout>

4

1 回答 1

1

这是一个简单的纵横比问题:

  • 1080x1920 为 16:9
  • 480x800 为 5:3

所以更高分辨率的屏幕是一个更长(更高)的矩形。您的布局设计得很好,部分布局将悬挂在底部,另一部分悬挂在顶部,但是您在设计时考虑到了较高的屏幕,因此在较小的屏幕上可以一起运行。您有以下两种选择之一:

  1. 重新设计布局以正确适应较短的屏幕,在这种情况下,在较高的屏幕上,它只会拉伸以显示顶部和底部之间的更多额外空间。
  2. 使用资源限定符根据屏幕高度为屏幕创建两种不同的布局。仅当您无论设备的屏幕方面如何都试图获得更完美的像素外观时,这种程度的努力才有意义。
于 2013-08-19T14:59:10.210 回答