我有一个GridLayout
,有七ImageButton
秒。我想让它们在两个相等的行中,宽度上有四个相等的列,第一行中有4个按钮,第二行中有3个按钮。这是我的问题...我希望最后一个按钮跨越两列。我使用了一些尺寸大于原始按钮尺寸的测试图像。另外,我创建了一个XML文件,如下所示,可以引用按钮样式。
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="ButtonStyle">
<item name="android:textColor">#00FF00</item>
<item name="android:typeface">monospace</item>
<item name="android:adjustViewBounds">true</item>
<item name="android:background">@android:color/background_light</item>
<item name="android:layout_marginLeft">5dip</item>
<item name="android:layout_marginRight">5dip</item>
<item name="android:layout_marginTop">5dip</item>
<item name="android:layout_marginBottom">5dip</item>
<item name="android:layout_width">0dip</item>
<item name="android:layout_gravity">fill</item>
<item name="android:layout_columnWeight">20</item>
<item name="android:scaleType">fitXY</item>
</style>
</resources>
我使用ImageButton7的默认layout_columnSpan
排列它们没有问题,即1.当我为该ImageButton设置layout_columnSpan
为2时,第二行在高度上延伸,给出第二种观点。
查看ImageButton7,layout_columnSpan = 1
查看ImageButton7,layout_columnSpan = 2
这是我的XAML代码:
<?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:minWidth="25px"
android:minHeight="25px">
<GridLayout
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/gridLayout1"
android:columnCount="4">
<ImageButton
android:src="@drawable/btn0"
android:id="@+id/imageButton1"
style="@style/ButtonStyle" />
<ImageButton
android:src="@drawable/btn1"
android:id="@+id/imageButton2"
style="@style/ButtonStyle" />
<ImageButton
android:src="@drawable/btn2"
android:id="@+id/imageButton3"
style="@style/ButtonStyle" />
<ImageButton
android:src="@drawable/btn3"
android:id="@+id/imageButton4"
style="@style/ButtonStyle" />
<ImageButton
android:src="@drawable/btn4"
android:id="@+id/imageButton5"
style="@style/ButtonStyle" />
<ImageButton
android:src="@drawable/btn5"
android:id="@+id/imageButton6"
style="@style/ButtonStyle" />
<ImageButton
android:src="@drawable/btn6"
android:id="@+id/imageButton7"
style="@style/ButtonStyle"
android:layout_columnSpan="2" />
</GridLayout>
</LinearLayout>
答案 0 :(得分:1)
图像按钮尝试保持图像的纵横比,因此当yoy跨度Button7时,其宽度将延伸,因此其高度会延伸到保持纵横比。
然后当高度变大时,所有行的高度都会变大,这就会发生;)
要解决您的问题,只需按钮7图像的宽高比适合两列(如现在的2倍宽度),您的问题就会解决;)
解决问题的另一个方法是创建一个9patch图像。看这个链接:
https://developer.android.com/studio/write/draw9patch.html
9pAtch图像是可扩展的和伟大的事物。
答案 1 :(得分:0)
为什么要使用GridLayout? 我会使用LinearLayout和权重(伪xml):
<Vertical LinearLayout>
<Horizontal LinearLayout with weightsum=4>
<element with weight 1/>
<element with weight 1/>
<element with weight 1/>
<element with weight 1/>
</Horizontal LinearLayout with weightsum=4>
<Horizontal LinearLayout with weightsum=4>
<element with weight 1/>
<element with weight 1/>
<element with weight 2/>
</Horizontal LinearLayout with weightsum=4>
</Vertical LinearLayout