2012-03-27 1 views
0

두 개의 레이아웃이 있습니다. 하나는 내 사용자 정의 키패드 레이아웃을 포함하는 기본 레이아웃입니다. 내가 포함 된 레이아웃을 숨기면 주 레이아웃이 왜곡됩니다.Android : 관련 레이아웃에 포함 된 레이아웃보기 및 숨기기

내 기본 레이아웃 xml은 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/root_rl" 
android:layout_width="fill_parent" 
android:layout_height="match_parent" 
android:background="@drawable/gradient_header" > 

<LinearLayout 
    android:id="@+id/linHeader" 
    style="@style/linHeader" 
    android:layout_height="55dp" 
    android:baselineAligned="false" 
    android:weightSum="1" > 

    <LinearLayout 
     android:id="@+id/linLogo" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight=".60" 
     android:gravity="center_vertical" > 

     <TextView 
      android:id="@+id/tvOutletName" 
      style="@style/linHeader_text" 
      android:text="" > 
     </TextView> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight=".40" 
     android:gravity="right|center_vertical" > 

     <LinearLayout 
      android:id="@+id/btnAdvList" 
      style="@style/btnChart" 
      android:onClick="btnAdvList" > 
     </LinearLayout> 

     <LinearLayout 
      android:id="@+id/btnDownArrow" 
      style="@style/btnDownArrow" 
      android:onClick="btnCollapseExpand" > 
     </LinearLayout> 

     <LinearLayout 
      android:id="@+id/btnRightArrow" 
      style="@style/btnRightArrow" 
      android:onClick="btnDone" > 
     </LinearLayout> 
    </LinearLayout> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/linSearch" 
    style="@style/linSearch" 
    android:layout_below="@+id/linHeader" > 

    <EditText 
     android:id="@+id/etSearchText" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="8dp" 
     android:layout_marginRight="8dp" 
     android:layout_weight="1" 
     android:hint="@string/LblText_Search" /> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/linInfo" 
    style="@style/linInfo" 
    android:layout_below="@+id/linSearch" > 

    <Spinner 
     android:id="@+id/spinner1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" > 
    </Spinner> 

    <Spinner 
     android:id="@+id/spinner2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" > 
    </Spinner> 

    <Spinner 
     android:id="@+id/spinner3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" > 
    </Spinner> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/linTitle" 
    style="@style/lstTitle" 
    android:layout_below="@+id/linInfo" > 

    <TextView 
     android:id="@+id/tvItems" 
     style="@style/lstTitleText" 
     android:layout_width="0dp" 
     android:layout_weight="2" 
     android:text="@string/LblText_Items" > 
    </TextView> 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/lsttitle_seperator" > 
    </ImageView> 

    <TextView 
     android:id="@+id/tvOrder" 
     style="@style/lstTitleText" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:text="@string/AdvList_Order" > 
    </TextView> 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/lsttitle_seperator" > 
    </ImageView> 

    <TextView 
     android:id="@+id/tvTotal" 
     style="@style/lstTitleText_Right" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:text="@string/AdvList_Total" > 
    </TextView> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/linBody" 
    style="@style/linBody" 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:layout_above="@+id/linKeypad" 
    android:layout_below="@+id/linTitle" 
    android:orientation="vertical" 
    android:weightSum="1" > 

    <ExpandableListView 
     android:id="@+id/expandableList" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:cacheColorHint="#00000000" 
     android:childDivider="#fff" 
     android:focusable="true" 
     android:groupIndicator="@android:color/transparent" > 
    </ExpandableListView> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/linKeypad" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/linFooter" > 

    <include 
     android:id="@+id/linearLayoutKeyPad" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     layout="@layout/custom_decimal_keypad" /> 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/linFooter" 
    style="@style/linFooter" > 

    <TextView 
     android:id="@+id/tvOrdersTaken" 
     style="@style/linFooter_text" 
     android:layout_weight="1" > 
    </TextView> 

    <TextView 
     android:id="@+id/tvTotalValue" 
     style="@style/linFooter_text" 
     android:layout_weight="1" 
     android:gravity="right" > 
    </TextView> 
</LinearLayout> 

</RelativeLayout> 

및 포함 된 키패드 레이아웃

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/linearLayoutKeyPad" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:background="#efefef" 
android:orientation="vertical" 
> 

<TableLayout 
    android:id="@+id/tableLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" > 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:background="#999" 
     android:gravity="center_horizontal" > 

     <Button 
      android:id="@+id/btnKeyPad0" 
      android:layout_width="40dip" 
      android:onClick="btnKeyPad0" 
      android:text="0" > 
     </Button> 

     <Button 
      android:id="@+id/btnKeyPad1" 
      android:layout_width="40dip" 
      android:onClick="btnKeyPad1" 
      android:text="1" > 
     </Button> 

     <Button 
      android:id="@+id/btnKeyPad2" 
      android:layout_width="40dip" 
      android:onClick="btnKeyPad2" 
      android:text="2" > 
     </Button> 

     <Button 
      android:id="@+id/btnKeyPad3" 
      android:layout_width="40dip" 
      android:onClick="btnKeyPad3" 
      android:text="3" > 
     </Button> 

     <Button 
      android:id="@+id/btnKeyPad4" 
      android:layout_width="40dip" 
      android:onClick="btnKeyPad4" 
      android:text="4" > 
     </Button> 

     <ImageButton 
      android:id="@+id/btnKeyPadBackSpace" 
      android:layout_width="40dip" 
      android:onClick="btnKeyPadBackSpace" 
      android:src="@drawable/backspace" > 
     </ImageButton> 
    </TableRow> 
</TableLayout> 

<TableLayout 
    android:id="@+id/tableLayout2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" > 

    <TableRow 
     android:id="@+id/tableRow2" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:background="#999" 
     android:gravity="center_horizontal" > 

     <Button 
      android:id="@+id/btnKeyPad5" 
      android:layout_width="40dip" 
      android:onClick="btnKeyPad5" 
      android:text="5" > 
     </Button> 

     <Button 
      android:id="@+id/btnKeyPad6" 
      android:layout_width="40dip" 
      android:onClick="btnKeyPad6" 
      android:text="6" > 
     </Button> 

     <Button 
      android:id="@+id/btnKeyPad7" 
      android:layout_width="40dip" 
      android:onClick="btnKeyPad7" 
      android:text="7" > 
     </Button> 

     <Button 
      android:id="@+id/btnKeyPad8" 
      android:layout_width="40dip" 
      android:onClick="btnKeyPad8" 
      android:text="8" > 
     </Button> 

     <Button 
      android:id="@+id/btnKeyPad9" 
      android:layout_width="40dip" 
      android:onClick="btnKeyPad9" 
      android:text="9" > 
     </Button> 

     <Button 
      android:id="@+id/btnKeyPadDecimal" 
      android:layout_width="40dip" 
      android:onClick="btnKeyPadDecimal" 
      android:text="." > 
     </Button> 


     <Button 
      android:id="@+id/btnKeyPadOk" 
      android:layout_width="43dip" 
      android:onClick="btnKeyPadOk" 
      android:text="@string/LblText_Ok" > 
     </Button> 
    </TableRow> 
</TableLayout> 

</LinearLayout> 

팽창성리스트 뷰 행 레이아웃 이하대로이다 :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/linOrderTakingList" 
style="@style/lstRow" > 

<TextView 
    android:id="@+id/tvItemDesc" 
    style="@style/lstRowText" 
    android:layout_width="0dp" 
    android:layout_weight="2" > 
</TextView> 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/lsttitle_seperator" > 
</ImageView> 

<TextView 
    android:id="@+id/tvOrderQty" 
    style="@style/lstRowText" 
    android:layout_width="0dp" 
    android:layout_weight="1" > 
</TextView> 

<ImageView 
    android:id="@+id/imageView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/lsttitle_seperator" > 
</ImageView> 

<TextView 
    android:id="@+id/tvOrderValue" 
    style="@style/lstRowText_Right" 
    android:layout_width="0dp" 
    android:layout_weight="1" > 
</TextView> 

</LinearLayout> 

팽창성리스트 뷰 하위 레이아웃은 :

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/tableLayout1" 
style="@style/lstRow_Expanded_1" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" > 

<TableRow 
    android:id="@+id/tableRow1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <Button 
     android:id="@+id/btnUnit" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="2" 
     android:text="@string/LblText_Unit" > 
    </Button> 

    <Button 
     android:id="@+id/btnCopy" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="2" 
     android:text="@string/MenuBtnText_Copy" > 
    </Button> 

    <TextView 
     android:id="@+id/tvQty" 
     style="@style/txtLable" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:gravity="right" 
     android:text="@string/AdvList_Qty" > 
    </TextView> 

    <TextView 
     android:id="@+id/tvQtyValue" 
     style="@android:style/Widget.EditText" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="2" > 

     <requestFocus /> 
    </TextView> 
</TableRow> 

<TableRow 
    android:id="@+id/tableRow2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/tvAvg" 
     style="@style/txtLable" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:text="@string/LblText_Avg" > 
    </TextView> 

    <TextView 
     android:id="@+id/tvLag" 
     style="@style/txtLable" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:text="@string/LblText_Lag" > 
    </TextView> 

    <TextView 
     android:id="@+id/tvUnitPr" 
     style="@style/txtLable" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:text="@string/LblText_Unit_Pr" > 
    </TextView> 

    <TextView 
     android:id="@+id/tvMrp" 
     style="@style/txtLable" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:text="@string/LblText_MRP" > 
    </TextView> 

    <TextView 
     android:id="@+id/tvSo" 
     style="@style/txtLable" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:text="@string/LblText_SO" > 
    </TextView> 
</TableRow> 

<TableRow 
    android:id="@+id/tableRow3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/tvAvgValue" 
     style="@android:style/Widget.EditText" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 

    <TextView 
     android:id="@+id/tvLagValue" 
     style="@android:style/Widget.EditText" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 

    <TextView 
     android:id="@+id/tvUnitPrValue" 
     style="@android:style/Widget.EditText" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 

    <TextView 
     android:id="@+id/tvMrpValue" 
     style="@android:style/Widget.EditText" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 

    <TextView 
     android:id="@+id/tvSoValue" 
     style="@android:style/Widget.EditText" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 
</TableRow> 

</TableLayout> 

image 1

가시 키패드를 한 후에 왜곡 된 레이아웃의 스크린 샷 : 키패드를보기 전에 레이아웃의 스크린 샷

image 2

나는 또한 아이 뷰를 갱신하려고 무효화 보기, 프로그래밍 방식으로 상대 레이아웃을 수정합니다. 몇 가지 해결책을 알려주십시오. 키패드 위에 목록을 두지 않으면 왜곡되지 않지만 목록보기가 유용하지 않은 키패드 뒤에 숨겨집니다. 기본적으로 키패드를 사용하면 목록보기가 표시 될 때 위로 이동하고 사라질 때 정상으로 돌아갈 수 있습니다.

+0

너무 많은 중첩 된 '선형 레이아웃'을 사용하는 대신 메인보기/레이아웃/활동에서 단순히 '상대 레이아웃'을 사용할 수 있습니다. 아이러니하게도, 질문 제목에는 ** Android : 관련 레이아웃에 포함 된 레이아웃보기 및 숨기기 **가 있지만 여기에는 상대 레이아웃 코드가 표시되지 않았습니다. 다시 수정하십시오. – Ghost

+0

레이아웃을 숨기고 확인하면 kepad.setVisibility (View.GONE)를 사용하십시오. – user936414

+0

서식을 잘못 작성하여 레이아웃을 편집했습니다. 가시성에 관해서는 GONE과 VISIBLE을 설정하면 레이아웃이 조정 된 이후에 왜곡이 발생합니다. 만약 내가 단순히 보이지 않는 것과 가시적 인 것을 사용한다면 왜곡은 없다. 그러나 나는 빈 공간을 막고 싶지 않다. 너비와 높이를 0으로 설정하려고 시도해도 같은 왜곡이 발생합니다. – Mal

답변

1

확장보기에 왜곡이 발생하기 때문에 레이아웃에 문제가있는 것 같습니다.

나는 당신의 자식 레이아웃에서 TableLayout을 없애는 것이 좋습니다. 때때로 예측할 수 없으며 (예 : LinearLayout의 중첩을 사용하여) 예측할 수없는 경우도 있습니다.

관련 문제