2012-03-27 51 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 2012-03-27 06:00:55

+0

当您隐藏布局并检查时,使用kepad.setVisibility(View.GONE)。 – user936414 2012-03-27 06:04:10

+0

对不起格式化,现在编辑了布局。关于能见度,当我设置GONE和VISIBLE时,由于布局被调整,我得到了失真。如果我只是简单地使用INVISIBLE和VISIBLE,那么就不会出现失真,但我不想让emtpty空间被阻挡。我试图将宽度和高度设置为0,即使发生了相同的失真。 – Mal 2012-03-27 07:12:12

回答

1

由于失真发生在扩展视图上,所以问题可能在于它的布局。

我建议你在你的孩子布局中摆脱TableLayout:它有时是不可预知的,没有它就可能实现相同的结果(例如使用嵌套的LinearLayout's)。