【发布时间】:2013-08-13 04:30:12
【问题描述】:
我在 Photoshop 中创建了一个按钮。问题是,当我从大屏幕手机测试应用程序时,一切都很好,但是当我在较小的手机上测试时,按钮非常大。如何为每种手机尺寸制作合适的尺寸按钮?
【问题讨论】:
-
请出示您的代码
我在 Photoshop 中创建了一个按钮。问题是,当我从大屏幕手机测试应用程序时,一切都很好,但是当我在较小的手机上测试时,按钮非常大。如何为每种手机尺寸制作合适的尺寸按钮?
【问题讨论】:
我想“我在 Photoshop 中设计了一个按钮”是指您设计了它的背景图像。
Button 的大小实际上不一定取决于背景图像的大小。您可以通过可以在 layout.xml 文件(或代码)中设置的属性来控制按钮的大小。
在这个简单的示例中,Button 将始终使用父布局宽度 (LinearLyout) 的一半。 (注意“weightSum”和“weight”属性)。
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:weightSum="2">
<Button
android:id="@+id/btn1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:text="Button"
android:layout_weight="1" />
</LinearLayout>
当然,还有很多方法和属性可以调整布局以适应不同的屏幕尺寸,这里只是给你一个简单的例子来说明如何做到这一点。 有关更多信息,请查看 Google-Android-Developer 页面中的本教程:
支持多种屏幕尺寸(尤其是密度无关性对您来说应该很有趣)
http://developer.android.com/guide/practices/screens_support.html
【讨论】:
layout_weights时,设置android:layout_width="0dp"。并且,对于具有垂直方向的 LinearLayout,android:layout_height="0dp".
0dp 作为性能增强器,但其推理实际上是相当合乎逻辑的。如果您使用layout_weights 来控制空间分配,则提及android:layout_width="wrap_content" 是多余的。一个出色的答案人。 +1。在这里发现你的答案有点缺乏:Strange thread behavior with onClickListener.
layout_height 设置为 0dp 会适得其反。视图会消失。 layout_weight 用于在父级内分配空间。如何将空间分配给父母完全是另一个问题。出于提供示例的目的,将 LinearLayout 的 android:layout_height 恢复为 wrap_content(您之前有正确的值)。孩子(即按钮)的属性是正确的。如果有更多孩子,他们的layout_widths 也将是0dp,因为孩子会_并排_添加(父母的方向目前是水平的)。