【问题标题】:How to close nested layout when open new layout in android?在android中打开新布局时如何关闭嵌套布局?
【发布时间】:2015-10-31 19:22:30
【问题描述】:

我正在开发一个 android 应用程序,因为我正在使用一个包含根布局(invitation_single)和嵌套布局(隐藏)的布局。当我单击根布局时,嵌套布局显示以及根布局工作正常。 现在我的输出如下图所示

但我希望我的输出为,

这意味着如果我单击“event2”,则需要隐藏第一个“事件”的同时嵌套布局(是,否,也许是按钮),但如果我有一个事件,则该事件的嵌套布局需要可见,否则,如果我有多个事件意味着我想将我的输出显示为第二个图像(第一个“事件”的嵌套布局在单击第二个事件时隐藏)。我怎样才能做到这一点。 我的布局代码如下所示,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/invitation_single"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="?android:dividerVertical"
    android:dividerPadding="5dp"
    android:showDividers="middle"
    tools:context=".MainActivity">

    <ImageButton
        android:id="@+id/image"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/ic_action_event" />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="1"
        android:clickable="false"
        android:focusable="true"
        android:orientation="vertical">

        <TextView
            android:id="@+id/invitation_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:paddingRight="0dp"
            android:paddingTop="3dp"
            android:textColor="@color/black"
            android:textSize="18sp" />

        <TextView
            android:id="@+id/invitation_place"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="5dp"
            android:paddingRight="0dp"
            android:textColor="@color/black"
            android:textSize="15sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/hidden"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_marginLeft="-270dp"
        android:layout_marginTop="60dp"
        android:layout_weight="1"
        android:clickable="true"
        android:focusable="true"
        android:orientation="horizontal"
        android:paddingTop="1dp"
        android:visibility="gone"
        android:weightSum="3">


        <Button
            android:id="@+id/yesbutton"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_marginLeft="7dp"
            android:layout_weight="1"
            android:background="@color/blue"
            android:text="Yes"
            android:textColor="@color/black"></Button>

        <Button
            android:id="@+id/nobutton"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_marginLeft="25dp"
            android:layout_weight="1"
            android:background="@color/blue"
            android:text="No"
            android:textColor="@color/black"></Button>

        <Button
            android:id="@+id/buttonmaybe"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_marginLeft="25dp"
            android:layout_marginRight="10dp"
            android:layout_weight="1"
            android:background="@color/blue"
            android:text="Maybe"
            android:textColor="@color/black"></Button>

    </LinearLayout>


</LinearLayout>

我的编程代码如下,

final LinearLayout first = (LinearLayout) convertView.findViewById(R.id.invitation_single);
            final LinearLayout second = (LinearLayout) convertView.findViewById(R.id.hidden);
first.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    switch (v.getId()) {
                        case R.id.invitation_single:
                            second.setVisibility(View.VISIBLE);
                            break;

                    }
                }


            });

In above code I am used to display nested layout(hidden) immediately below root layout(invitation single).

【问题讨论】:

    标签: android android-layout android-design-library


    【解决方案1】:

    您是否有少量事件或事件的数量可能会很长?如果第二个选择是真的,那么我建议查看 ExpandableListView。查看此链接,特别是有关如何在展开新项目时折叠以前打开的项目:ExpandabeListView auto collapse

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多