Android : LinearLayout 내의 모든 요소를 ​​동일한 크기로 만드는 방법은 무엇입니까?


80

비디오 제목과 태그를 표시하는 대화 상자를 만들고 싶습니다. 텍스트 아래에보기, 편집 및 삭제 버튼을 추가하고 이러한 요소의 크기를 동일하게 만들고 싶습니다. 누구든지 LinearView 내부의 요소를 동일한 크기로 만들기 위해 .xml 레이아웃 파일을 수정하는 방법을 알고 있습니까?

현재 레이아웃 파일은 다음과 같습니다.

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:orientation="vertical">

    <LinearLayout 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:orientation="vertical">

          <TextView 
              android:layout_width="wrap_content" 
              android:layout_height="wrap_content" 
              android:id="@+id/txtTitle" android:text="[Title]" >
          </TextView>

          <TextView 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content" 
              android:id="@+id/txtTags"            
              android:text="[Tags]" >
          </TextView>

    </LinearLayout>

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

        <Button 
           android:layout_width="wrap_content" 
           android:layout_height="wrap_content" 
           android:id="@+id/btnPlay" 
           android:text="View">
        </Button>

        <Button 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/btnEdit" 
            android:text="Edit">
        </Button>

        <Button 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/btnDelete" 
            android:text="Delete">
        </Button>

    </LinearLayout>

</LinearLayout>

붙여 넣은 파일 내용을 수정하여 해결책을 보여줄 수 있다면 감사하겠습니다.

감사!

답변:


173

사용 android:layout_width="0px"android:layout_weight="1"Buttons. 즉, 버튼은 0 픽셀 이하를 차지해야하지만 세 개는 버튼 사이에 추가 공간을 분할해야합니다. 원하는 시각 효과를 얻을 수 있습니다.


4
당신이 경우 정말 "0,1,2"stretchColumns = 대안으로 안드로이드와 TableLayout을 사용할 수 당신을 원했다.
Jeremy Logan

굉장합니다. 이는 너비를 0px로 설정하면 가중치가 설정을 재정의한다는 의미입니까? 왜 그래야만하지?
noob

버튼이 GridLayout. 이 경우 그들은 정말로 0px넓어집니다. 어쩌면 GridLayout받아들이지 layout_weight않습니까?
Zelphir Kaltstahl

@Zelphir : GridLayout확실히 layout_weight. 이는 LinearLayout, 그리고 아마도의 일부 하위 클래스 에서만 사용됩니다 LinearLayout.
CommonsWare

33

또 다른 방법은 만드는 것입니다 android:layout_width="fill_parent"android:layout_weight="1"것 이것은 또한 잘 작동합니다!


19
이 답변에 대해 정말 흥분했습니다. :-) 열정을 사랑하십시오!
Oh Danny Boy

CommonsWare의 솔루션이 저에게 효과가 없었지만 이것이 성공했습니다! :) "fill_parent"보다 선호해야한다고 들었 기 때문에 "match_parent"를 사용했지만 둘 다 작동합니다.
codepleb 2014-08-14

이러한 요소 의 LinearLayout 부모에는 layout_width = "match_parent" 도 있어야합니다 .
Patapoom

19

원하는 weightSum 과 함께 LinearLayout 을 사용 하고 동일한 layout_weight 요소를 만듭니다 . 여기에 예가 있습니다 ...

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:weightSum="5">

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_share_white_36dp"/>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_search_white_36dp"/>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_event_note_white_36dp"/>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_brush_white_36dp"/>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_menu_white_36dp"/>
</LinearLayout>

따라서 모든 요소의 가중치 합계는 5입니다. 여기 스크린 샷이 있습니다.

여기에 이미지 설명 입력

그 주, 구글 소재 디자인 아이콘이 사용됩니다. 이것이 도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.