我的Android应用程序出了问题。当我使用我的hp触摸板时,其分辨率为1024x768,一切看起来都不错。然而,当我在800x480(Desire HD)上进行测试时,发生了这种情况:
这是我的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/linearLayoutH1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight=".25"
android:orientation="vertical"
android:weightSum="1" >
<EditText
android:id="@+id/result"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
android:layout_weight=".50"
/>
<EditText
android:id="@+id/entry"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
android:layout_weight=".50"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayoutH3"
android:layout_width="fill_parent"
android:layout_height="100sp"
android:orientation="horizontal"
android:weightSum="1.0" >
<Button
android:id="@+id/buttonClear"
style="@style/ButtonText"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:background="@drawable/custombuttonred"
android:text="@string/clear"
android:layout_weight=".40"
android:textSize="50sp" />
<ImageButton
style="@style/ButtonText"
android:id="@+id/c101_image"
android:layout_width="40sp"
android:layout_height="100sp"
android:scaleType="centerInside"
android:background="@drawable/cloud101"
android:layout_weight=".20" />
<Button
android:id="@+id/buttonBackspace"
style="@style/ButtonText"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:background="@drawable/custombuttonred"
android:text="@string/backspace"
android:layout_weight=".40"
android:textSize="30sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayoutH2"
android:layout_width="fill_parent"
android:layout_height="50sp"
android:layout_weight=".25"
android:orientation="horizontal"
android:weightSum="1.0" >
<Button
android:id="@+id/button1"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombutton"
android:text="@string/b1"
android:textSize="110sp" />
<Button
android:id="@+id/button2"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombutton"
android:text="2"
android:textSize="110sp" />
<Button
android:id="@+id/button3"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombutton"
android:text="3"
android:textSize="110sp" />
<Button
android:id="@+id/buttonDevide"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombuttonblue"
android:text="/"
android:textSize="110sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayoutH3"
android:layout_width="fill_parent"
android:layout_height="50sp"
android:layout_weight=".25"
android:orientation="horizontal"
android:weightSum="1.0" >
<Button
android:id="@+id/button4"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombutton"
android:text="4"
android:textSize="110sp" />
<Button
android:id="@+id/button5"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombutton"
android:text="5"
android:textSize="110sp" />
<Button
android:id="@+id/button6"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombutton"
android:text="6"
android:textSize="110sp" />
<Button
android:id="@+id/buttonMult"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombuttonblue"
android:text="X"
android:textSize="110sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayoutH4"
android:layout_width="fill_parent"
android:layout_height="50sp"
android:layout_weight=".25"
android:orientation="horizontal"
android:weightSum="1.0" >
<Button
android:id="@+id/button7"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombutton"
android:text="7"
android:textSize="110sp" />
<Button
android:id="@+id/button8"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombutton"
android:text="8"
android:textSize="110sp" />
<Button
android:id="@+id/button9"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombutton"
android:text="9"
android:textSize="110sp" />
<Button
android:id="@+id/buttonMinus"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombuttonblue"
android:text="-"
android:textSize="110sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayoutH5"
android:layout_width="fill_parent"
android:layout_height="50sp"
android:layout_weight=".25"
android:orientation="horizontal"
android:weightSum="1.0" >
<Button
android:id="@+id/button0"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombutton"
android:text="0"
android:textSize="110sp" />
<Button
android:id="@+id/buttonDot"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombuttonblue"
android:text="."
android:textSize="110sp" />
<Button
android:id="@+id/buttonEq"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombuttongreen"
android:text="="
android:textSize="110sp" />
<Button
android:id="@+id/buttonPlus"
style="@style/ButtonText"
android:layout_width="50sp"
android:layout_height="fill_parent"
android:layout_weight=".25"
android:background="@drawable/custombuttonblue"
android:text="+"
android:textSize="110sp" />
</LinearLayout>
</LinearLayout>
我已经了解了不同屏幕尺寸的问题,但无论我使用sp还是dp,它在800x480屏幕上仍然看起来很糟糕。我该怎么做才能正确显示字体并且图片很好地居中并且不能太紧闭?
答案 0 :(得分:2)
首先:您不应该为视图维度使用sp
。用户dp
代表视图尺寸,sp
代表文字尺寸。
第二:如果你使用weightsum
和layout_weight
,你不需要视图宽度的尺寸,你给它们0dp值,它们将被绘制好。
例如,如果您使用此配置:
<ImageButton
style="@style/ButtonText"
android:id="@+id/c101_image"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:scaleType="centerInside"
android:background="@drawable/cloud101"
android:layout_weight=".20" />
您的imageButton应该在所有屏幕上正确显示。 对所有视图使用相同的技术,它应该可以解决您的问题。
注意:为文字使用较小的字体:)
祝你好运, Arkde答案 1 :(得分:1)
你的textSize对于那个设备来说太大了。
在res目录中创建一个layout-normal文件夹,并在其中粘贴布局副本。将按钮上的110sp更改为更小的值。也许开始尝试像70sp或其他东西。测试不同尺寸,直到看起来很好。
此外,如果您打算让您的应用程序支持小屏幕,您还需要为它们制作另一份布局文件。