Android LinearLayout:放置一些具有相等空间的对象

时间:2015-08-10 10:30:49

标签: android android-layout

enter image description here

我需要在布局中放置一些具有相等空间的ImageButton(类似于我附加的图片)。 我查了很多类似的帖子:

Android: How to make all elements inside LinearLayout same size?

give equal space between ImageViews

What is android:weightSum in android, and how does it work?

然而他们没有帮助我。 使用边距和填充并没有解决我的问题,因为我想在ImageButton周围有相同的空间。对我来说,在任何设备中保持空间等于非常重要。另外我想将大小设置为我的ImageButton。它是圆形图像,因此图像的高度和宽度应相等。当我使用权重时,我不能将任意宽度设置为ImageButton的layout_width。

感谢您帮助我。

P.S。这不是重复的帖子。在我带来的第一个链接中,不可能设置相等的空间。它只是把对象放在一起。

这是一个带有2个任意大小的ImageButton的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="info.androidhive.materialdesign.activity.HomeFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"    
android:background="@drawable/background_home">

<ImageButton
    android:layout_width="@dimen/log_guid_image_height"
    android:layout_height="@dimen/log_guid_image_height"
    android:onClick="onLastClick"
    android:id="@+id/btn_menu_last"
    android:background="@drawable/menu_last" />

<ImageButton
    android:layout_width="@dimen/log_guid_image_height"
    android:layout_height="@dimen/log_guid_image_height"
    android:onClick="onAddClick"
    android:id="@+id/btn_menu_add_records"
    android:background="@drawable/menu_add_records" />
</LinearLayout>

我为每个ImageButton添加了android:layout_weight =“1”,并设置了android:layout_width =“0px”,它给了我这个:

enter image description here

问题是如何在ImageButton周围添加相等的空间并为它们提供任意大小!

4 个答案:

答案 0 :(得分:0)

您可以使用TableLayout,如下所示:

 <TableLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="left|top"
    android:stretchColumns="*">

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:id="@+id/imageButton" />

        <ImageButton
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/imageButton2" />

    </TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <ImageButton
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/imageButton3" />

        <ImageButton
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/imageButton4" />
    </TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <ImageButton
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/imageButton5" />

        <ImageButton
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/imageButton6" />
    </TableRow>
</TableLayout>

您可以在LinearLayout位置使用内部ImageButton来自定义ImageButton位置。

答案 1 :(得分:0)

Try this:-

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/background_home"
    android:weightSum="1" >

    <ImageView
        android:id="@+id/btn_menu_last"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:onClick="onLastClick"
        android:src="@drawable/menu_last" />

    <ImageView
        android:id="@+id/btn_menu_add_records"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.5"
        android:onClick="onAddClick"
        android:src="@drawable/menu_add_records" />

</LinearLayout>

答案 2 :(得分:0)

像这样嵌套LinearLayouts

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

</LinearLayout>

ImageButtons放在每个LinearLayouts

使用LinearLayout并获得相等的空间与您阅读的过去Q&A基本相同。

在这些等间距的单元格中,您可以将ImageButtons放在 layout_gravity =&#34; center&#34; (或 gravity =&#34; center&#34 ; LinearLayout显示abobe)。

答案 3 :(得分:0)

我认为对于此问题,您需要使用GridView并指定columnWidth选项。