我需要创建一个这样的布局:
我是android的新手,我创建了一个布局。
这是我的代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg"
android:orientation="vertical"
android:padding="10dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="horizontal" >
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="horizontal" >
<Button
android:id="@+id/button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/btn_home"
android:paddingRight="10dp" />
<Button
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="#721480" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="horizontal" >
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#721422"
android:paddingRight="10dp" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#723422"
android:paddingRight="10dp" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#724422" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="horizontal" >
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="#723111"
android:paddingRight="10dp" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#754300" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="horizontal" >
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#700000"
android:paddingRight="10dp" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="#724500" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="horizontal" >
</LinearLayout>
</LinearLayout>
</LinearLayout>
但它不适合我想要的。我有两个问题:
任何人都可以帮我找出来吗?
答案 0 :(得分:0)
在同一元素上合并padding
和weight
有时可能会很棘手。
要回答您的第一个问题 - 热门使元素成为正方形 - 创建扩展Button
的自定义按钮并覆盖onMeasure
方法:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
if(width > height) {
super.onMeasure(heightMeasureSpec, heightMeasureSpec);
} else {
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
}
回答你的第二个问题 - 结合体重时很棘手。通过使用权重属性,您可以告诉按钮占用空间的1/3或2/3,无论其内容是什么。在这种情况下,填充本身并不意味着什么,因为根据定义,填充是视图内容(实际文本或图像)与其边缘之间的空间量。因为你只是告诉按钮延长边缘为父母的1/3或2/3 ... 如果视图的内容不适合并且必须滚动,我会猜测你可能会看到填充。你可以通过另一层处理权重的布局来解决它,并让你的按钮处理填充。像这样:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:orientation="horizontal"
android:weightSum="3" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
... >
<Button
android:id="@+id/button"
android:layout_width="?"
android:layout_height="?"
android:layout_marginRight="10dp"
android:background="@drawable/?" />
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
... >
<Button
android:id="@+id/button1"
android:layout_width="?"
android:layout_height="?"
android:background="#721480" />
</LinearLayout>
</LinearLayout>