2012-03-14 5 views
1

저는 레이아웃이 있으며, 나머지 부분을 채우기를 원합니다 (가중치 사용). Listview가 완벽하게 작동합니다.레이아웃의 중첩 된 가중치

끝에있는 2 개의 버튼은 내가 의도 한대로 작동하지만 "중첩 된 가중치는 성능에 좋지 않습니다"라는 경고가 표시됩니다.

목록보기를 제거하면 경고가 사라졌기 때문에 이미 Listview에 대한 가중치 매개 변수를 사용했기 때문에 문제가 있다고 생각합니다.

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 

     <ListView 
      android:id="@+id/listMessages_messages" 
      android:layout_width="fill_parent" 
      android:layout_height="0dp" 
      android:layout_marginBottom="5dip" 
      android:layout_marginLeft="10dip" 
      android:layout_marginRight="10dip" 
      android:layout_marginTop="10dip" 
      android:layout_weight="1" 
      android:background="#000000" > 
     </ListView> 

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

      <Button 
       android:layout_width="fill_parent" 
       android:layout_height="0dp" 
       android:layout_weight="50" 
       android:visibility="invisible" /> 

      <Button 
       android:id="@+id/btnNewConversation_message" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="5dip" 
       android:layout_weight="50" 
       android:onClick="newConversation" 
       android:text="@string/NewConversation" /> 
     </LinearLayout> 

    </LinearLayout> 
+0

그래서 너는 지금 무엇을 원하니 .. –

+0

내가 뭘 잘못했는지 알고 싶다. a.k.a. 경고의 원인. 이후 내 응용 프로그램의 여러 장소 에서이 솔루션을 사용하고 싶습니다 –

답변

1

확인이 필요하다 암호. 당신은 또한 몇 가지를주고 제대로 및 버튼에 대한 수평 divison 그들을 조정하는 무게 속성을 줄 필요가 두보기 1.List보기 2.Linear 레이아웃 (두 개의 버튼) 배치로 임

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:weightSum="10"> 
    <ListView android:id="@+id/listMessages_messages" 
     android:layout_width="fill_parent" android:layout_height="0px" 
     android:layout_marginBottom="5dip" android:layout_marginLeft="10dip" 
     android:layout_marginRight="10dip" android:layout_marginTop="10dip" 
     android:layout_weight="8" android:background="#000000"> 
    </ListView> 
    <LinearLayout android:layout_width="fill_parent" 
     android:layout_height="0px" android:orientation="horizontal" 
     android:weightSum="10" android:layout_weight="2"> 
     <Button android:layout_width="0px" 
      android:layout_height="wrap_content" android:layout_weight="5" 
      /> 
     <Button android:id="@+id/btnNewConversation_message" 
      android:layout_width="0px" android:layout_height="wrap_content" 
      android:layout_marginRight="5dip" android:layout_weight="5" 
      android:onClick="newConversation" /> 
    </LinearLayout> 
</LinearLayout> 

경고 못하고 두 번째 선형 레이아웃에 대한 가중치 합 속성은 가중치를 사용하여 균등하게 나눕니다. 두 번째 선형 레이아웃 내에서 참고 사항 나는 너비가 0px가되도록

+0

답변을 주셔서 감사합니다. 이전 답변에서 weightsum의 의미를 파악하는 데 어려움이있었습니다. 이제는 내 응용 프로그램 작업을 시작할 수 있습니다. –

+1

해당 코드로 경고 메시지가 표시되지 않으면 IDE가 잘못 구성되어 있습니다. 중첩 된 가중치는 정확히 중첩 된 것입니다. 간단히 말해서 가중치를 추가하면 해당 사실을 변경하지 않습니다. 또한 fill_parent를 사용해야 할 때 너비/높이 값이 모두 0px 인 이유를 이해하지 못합니다. 그 이유는 무엇입니까? –

+0

@Justin Buser - 중첩 가중치의 간단한 작동 예제를 제공해 주시겠습니까? b/c 그들은 나를 위해 일하지 않습니다. 감사. – samosaris

0

내가 귀하의 질문에 올바르게 다음 졸인 이해 경우 은 (예를 들어 일부 10) 상단 레이아웃과 이 0 픽셀 로 설정해야 레이아웃 높이 속성을 5 ~ 6 같은 ListView에 일부 비중을 만들 아이 선형 레이아웃은 아이의 레이아웃의 layout_height에 대한 아이의 레이아웃에 layout_weight를이 0 픽셀 두 개의 버튼이 .Hope 것을이 레이아웃 자리에 함께하기로 (목록보기의 예 : 10 무게) 무게를 나머지 제공하면

+0

그 해결책에 가까운지만 전적으로. 내 견해로는리스트 뷰와 버튼의 무게가 관련되어서는 안됩니다. listview의 무게는 화면의 나머지 부분을 세로로 (높이) 채우고 버튼의 양쪽 모두는 화면의 절반을 가로로 (폭) 채워야합니다. –

+0

즉, Listview의 가중치는 바깥 쪽 선형 레이아웃에만 적용되어야하며 버튼의 가중치는 내부에있는 선형 레이아웃을위한 것이므로 목록보기와 상호 작용할 필요가 없습니다. –

+4

당신은 그가 무슨 말을하려고하는지 심각하게 이해 했습니까? 나는 그것을 다섯 번 읽었으며 그것의 머리 나 꼬리를 만들 수 없습니다. –