如何在android studio中将2列中的6个图像按钮与3行对齐?

时间:2016-06-13 12:45:04

标签: android layout

我是一个Android菜鸟,我正在试图弄清楚布局是如何工作的。尽管如此,还不能完全理解它。我在android studio中有一个活动,我希望在3行中显示6个图像按钮,对齐超过2个列。像这样:

 ___________________
|                   |
| button 1 button 2 |
|                   |
| button 3 button 4 |
|                   |
| button 5 button 6 |
|___________________|

我希望按钮和框架边缘之间的空间相同,以便按钮在整个屏幕上均匀显示。我尝试使用网格布局,但按钮要么粘在屏幕的一侧,要么保持彼此相邻。完成这项工作的最佳方法是什么?

到目前为止

我的xml:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:columnCount="2"
    android:rowCount="6">

    <ImageButton
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:id="@+id/button1"
        android:background="@drawable/image1" />

    <ImageButton
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:text="New Button"
        android:id="@+id/button2"
        android:background="@drawable/image2"/>

    <ImageButton
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:text="New Button"
        android:id="@+id/button3"
        android:background="@drawable/image3"/>

    <ImageButton
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:text="New Button"
        android:id="@+id/button4"
        android:background="@drawable/image4"/>

     <ImageButton
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:text="New Button"
        android:id="@+id/button5"
        android:background="@drawable/image5"/>

     <ImageButton
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:text="New Button"
        android:id="@+id/button6"
        android:background="@drawable/image6"/>
</GridLayout>

问题2:

我给图像150dp的宽度和高度,以便图像的尺寸不会改变。如果我将它设置为match_parent,则图像会变形为不相等的宽度和高度。无论如何要使图像在没有设定高度和宽度的情况下正确缩放?

3 个答案:

答案 0 :(得分:4)

您可以使用重量:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="3">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:weightSum="2">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button"
            android:layout_weight="1"
            android:layout_gravity="center_vertical" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button2"
            android:layout_weight="1"
            android:layout_gravity="center_vertical" />
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:weightSum="2">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button3"
            android:layout_weight="1"
            android:layout_gravity="center_vertical" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button4"
            android:layout_weight="1"
            android:layout_gravity="center_vertical" />
    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:weightSum="2">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button5"
            android:layout_weight="1"
            android:layout_gravity="center_vertical" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Button"
            android:id="@+id/button6"
            android:layout_weight="1"
            android:layout_gravity="center_vertical" />
    </LinearLayout>
</LinearLayout>

按钮的重量在视图中平均发生,如果要在按钮之间添加一些空间,则只需添加元素空间并为其指定权重。希望这个帮助

答案 1 :(得分:1)

  • android:layout_gravity设置ViewLayout的严重性 在其父母。

您可以将android:layout_gravity = center添加到GridLayout,它会使网格居中。

  • android:gravity设置View内容的严重性 用于。

因此您可以向android:gravity = center添加GridLayout之类的内容,并将其元素集中在其中。

并且对于不粘的按钮,您可以为每个ImageButton f.e添加填充。

android:paddingBottom="6dp" android:paddingLeft="6dp" android:paddingRight="6dp" android:paddingTop="6dp"

答案 2 :(得分:1)

ImageButton 布局中设置 android:layout_gravity = right

 <?xml version="1.0" encoding="utf-8"?>
 <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:columnCount="2"
 android:rowCount="6">



<ImageButton
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:id="@+id/button1"
    android:background="@drawable/date"
    android:layout_marginLeft="30dp"
    />

<ImageButton
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:text="New Button"
    android:id="@+id/button2"
    android:background="@drawable/date"
    android:layout_gravity="right"
    android:layout_marginRight="30dp"/>

<ImageButton
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:text="New Button"
    android:id="@+id/button3"
    android:background="@drawable/date"
    android:layout_marginLeft="30dp"/>

<ImageButton
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:text="New Button"
    android:id="@+id/button4"
    android:background="@drawable/date"
    android:layout_gravity="right"
    android:layout_marginRight="30dp"/>

<ImageButton
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:text="New Button"
    android:id="@+id/button5"
    android:background="@drawable/date"
    android:layout_marginLeft="30dp"/>

<ImageButton
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:text="New Button"
    android:id="@+id/button6"
    android:background="@drawable/date"
    android:layout_gravity="right"
    android:layout_marginRight="30dp"/>