我需要在布局中放置一些具有相等空间的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”,它给了我这个:
问题是如何在ImageButton周围添加相等的空间并为它们提供任意大小!
答案 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
选项。