Android:在相对布局中查看和隐藏包含的布局

Android:在相对布局中查看和隐藏包含的布局,android,android-relativelayout,expandablelistview,visible,Android,Android Relativelayout,Expandablelistview,Visible,我有两个布局,一个是主布局,其中包括我的自定义键盘布局。当我隐藏包含的布局时,主布局会扭曲 我的主要布局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" androi

我有两个布局,一个是主布局,其中包括我的自定义键盘布局。当我隐藏包含的布局时,主布局会扭曲

我的主要布局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>

可展开的listview行布局为:

<?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>

可展开的listview子布局为:

<?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>

查看键盘前的布局屏幕截图:

以及显示键盘后扭曲布局的屏幕截图:


我还尝试刷新子视图,使视图无效,通过编程修改相对布局。请帮我解决一些问题。如果我不把列表放在键盘上方,它不会扭曲,但是列表视图会隐藏在键盘后面,这是没有用的。我基本上需要键盘在列表视图可见时向上推列表视图,在列表视图消失时返回正常状态。

由于扩展视图发生变形,问题可能在于其布局


我建议您在子布局中去掉
TableLayout
:它有时是不可预测的,没有它也可能得到相同的结果(例如,使用嵌套的
LinearLayout
).

您可以在主视图/布局/活动中简单地使用
相对布局
,而不是使用大量嵌套的
线性布局
。具有讽刺意味的是,你的问题标题是Android:在相对布局中查看和隐藏包含的布局,但你没有在这里显示任何
相对布局
代码。隐藏布局并检查时,请重新编辑。请使用kepad.setVisibility(View.GONE)。对不起,对于格式设置,请立即编辑布局。关于可见性,当我设置“消失”和“可见”时,我会得到扭曲,因为布局已调整。如果我只是使用不可见和可见,没有失真,但我不希望emtpty空间被阻塞。我试着将宽度和高度设置为0,即使这样也会发生同样的变形。因为变形发生在展开的视图上,所以问题可能出在它的布局上。你能把它的内容也放在这里吗?@a.ch。我还包括了listview布局。