在android

时间:2015-08-15 16:39:24

标签: android android-layout

我需要创建一个这样的布局:

enter image description here

我是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>

但它不适合我想要的。我有两个问题:

  1. 我不知道如何强制按钮的宽度和高度大小相同。
  2. 为什么按钮中的填充不起作用?
  3. 任何人都可以帮我找出来吗?

1 个答案:

答案 0 :(得分:0)

在同一元素上合并paddingweight有时可能会很棘手。

要回答您的第一个问题 - 热门使元素成为正方形 - 创建扩展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>