这让我感到困惑,直到世界末日。我有一个480x800px的4.5英寸屏幕,我不知道屏幕上的DPI是什么,或任何屏幕。让我们说我想这样做:
每个红色框都是从屏幕一侧到另一侧的图片,而蓝色框则是其他东西(ImageButton或其他东西)。如何判断屏幕的DPI是什么以及将每张图片设置为多少像素?!这应该很简单但令人困惑。
答案 0 :(得分:0)
强烈建议您不要对事物的高度和宽度进行硬编码。您的应用程序可能运行的不同密度是您希望避免手动设置事物大小的确切原因。
相反,您可以使用wrap_content和fill_parent之类的东西。您可以使用ImageButton和其中的所有ImageViews创建LinearLayout之后的内容。然后你可以将你的ImaveViews设置为height =“wrap_content”和width =“fill_parent”。那么现在无论你在哪个屏幕上,它们总是会以与您正在显示的图片相同的全宽和高度显示。
Read about Layouts here要特别注意有关LinearLayouts的部分。
还要考虑这样一个事实,即您的应用可能无法运行的每个设备都与您的一样大。除非您希望自己的高度太小而无法使用,否则很多它们将无法在显示屏上显示6行空间。如果必须显示这么多行,你还必须将你的LinearLayout包装在ScrollView中。
答案 1 :(得分:0)
有两种选择:
<强> 1。在xml中定义布局
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="7"
android:orientation="vertical"
android:gravity="center_horizontal"
>
<Button
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="2"
android:text="button"
/>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#FFF"
/>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#0FF"
/>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#F0F"
/>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#FF0"
/>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#000"
/>
</LinearLayout>
** 2.在代码**中定义布局
我不打算在这里详细介绍,你可以从DisplayMetrics班得到所有数字:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);