0

GridLayoutには、7つのImageButtonがあります。私はそれらを高さが2列、幅が4列、第1列のボタンが4列、第2列のボタンが3列にしたいと考えています。ここに私の問題です...私は最後のボタンを2つの列にまたがるようにしたい。元のボタンの寸法よりも大きな寸法のテスト画像を使用しました。また、以下のようなXMLファイルをボタンスタイルのために参照しました。Android GridLayoutのImageButtonを調整する

<?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を使用してそれらを配置するには何の問題もない、それは私がそれのImageButtonのための2にlayout_columnSpanを設定した場合、第二列は、2番目のビューを与え、高さに延びており、1です。しかし。

見るときImageButton7、layout_columnSpan = 1 enter image description here

ここImageButton7、layout_columnSpan = 2 enter image description here

は私の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> 

目的は下の図のようなビューを持つことです。どんな助けもありがとう。 enter image description here

答えて

1

画像ボタンがそうするとき前年スパンイメージの縦横比を維持しようとButton7その幅がその高さは、アスペクト比をkeeepように延びる延在し、そのう。

高さが大きくなったときにその後の行の高さのすべてが大きくなり、これが起こる;)

だけでは、そのアスペクト比は2倍幅のような2列(に適しているような方法で画像をbutton7作るあなたの問題を解決するために、 )あなたの問題は解決されます;)

問題を解決する別の方法は9パッチイメージを作成することです。このリンクを見て:

https://developer.android.com/studio/write/draw9patch.html

9pAtch画像を拡張し、素晴らしいものです。

+0

ヒント@Amirをご確認ください。とにかく、画像を縮小したり、ボタンの縦横比を維持したりできますか?私はcloumnspan値を変更するたびに絵を変更しなければならないので、新しい絵を作ることは実用的ではありません。それは痛みです。 – Afshin

+0

悪い回答を回答;) –

+0

ありがとう。私はあなたの解決策を答えとしてマークしました。 – Afshin

0

なぜGridLayoutを使用しますか? Iは、(擬似XMLで)重みでのLinearLayout使用する:

<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 
+0

私は 'LinearLayout'と同様の問題があり、誰かが' GridLayout'を使って提案していたからです。 [その回答](http://stackoverflow.com/questions/39878871/android-vertical-alignment-of-button-in-linear-layout/39946257#39946257) – Afshin

関連する問題