0

GridLayout에는 7 개의 ImageButton이 있습니다. 나는 높이가 같고 너비가 같은 4 개의 행, 첫 번째 행의 4 개의 버튼, 두 번째 행의 3 개의 버튼에 넣고 싶습니다. 여기에 내 문제가있다 ... 나는 마지막 버튼을 두 개의 컬럼에 걸쳐 놓고 싶다. 원래 버튼 크기보다 더 큰 크기의 일부 테스트 이미지를 사용했습니다. 또한, 아래의 XML 파일을 버튼 스타일에 대해 참조하도록 만들었습니다. 내가 그하여 ImageButton에 대한 2 layout_columnSpan을 설정할 때안드로이드 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를 사용하여 배열에 아무런 문제가 없다, 즉, 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

이미지 버튼 이미지의 화면 비율을 유지하려고 .

그런 다음 높이는 행 높이 모두가 커짐에 더 큰 얻을 때이 문제가 발생합니다)

단지 2 배 폭처럼 (가로 세로 비율이 두 개의 컬럼에 적합한 지 당신이 방법으로 이미지를 button7하게 문제를 해결하기 위해 현재) 문제가 해결 될 것입니다.)

문제를 해결하는 또 다른 방법은 9 패치 이미지를 만드는 것입니다. 이 링크를 봐 :

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

9pAtch 이미지는 확장 가능하고 위대한 일입니다.

+0

힌트 @Amir에 감사드립니다. 어쨌든 이미지를 축소하거나 버튼의 크기에 비례하여 가로 세로 비율을 유지할 수 있습니까? IMHO는 새로운 그림을 만드는 것은 실용적이지 않습니다. 그 결과 cloumnspan 값을 변경할 때마다 그림을 변경해야합니다. 그리고 그것은 고통입니다 ... – Afshin

+0

나쁜 대답을 대답;) –

+0

고마워. 지금까지 최고로 효과가 있었기 때문에 해결책으로 표시했습니다. – Afshin

0

왜 GridLayout을 사용합니까? 나는 (의사 XML의) 무게의 LinearLayout을 사용 은 : 전년 동기 대비 스팬 Button7의 폭이 확장하고 그 높이가 가로 세로 비율을 keeep을 확장 그에 있도록 할 때

<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

관련 문제