【问题标题】:How to align six imagebuttons in 2 columns with 3 rows in android studio?如何在 android studio 中将 2 列中的 6 个图像按钮与 3 行对齐?
【发布时间】:2018-12-29 17:26:34
【问题描述】:

我是一个 android noob,我正在尝试弄清楚布局是如何工作的。还不能完全弄清楚。我在 android studio 中有一个活动,我想在 3 行上显示 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 之类的图像,则图像会扭曲为不相等的宽度和高度。有没有办法让图像在没有设置高度和宽度的情况下正确缩放?

【问题讨论】:

  • 设置gridLayout的cloumwidth属性

标签: android layout


【解决方案1】:

你可以使用权重:

<?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>

按钮的权重在您的视图中均等,如果您想在按钮之间添加一些空间,您只需添加元素空间并为其分配权重。希望对您有所帮助

【讨论】:

    【解决方案2】:
    • android:layout_gravity 设置ViewLayout 的重力 在其父级中。

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

    • android:gravity 设置View 其内容的比重 用于。

    这样您就可以在GridLayout 中添加类似android:gravity = center 的内容,这样它的元素就会居中。

    为了不粘住按钮,您可以为每个ImageButton f.e. 添加填充。

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

    【讨论】:

      【解决方案3】:

      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"/>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-02
        • 2021-02-19
        • 1970-01-01
        • 1970-01-01
        • 2017-09-14
        • 1970-01-01
        • 2016-09-23
        • 2013-07-30
        相关资源
        最近更新 更多