布局值不可见

时间:2015-07-25 05:25:19

标签: android android-layout android-studio

我正在开发一个Android应用程序,我使用的布局包含一个名为“invitation_single”的主要布局,两个子布局就是“hidden”和“hidden1”,当我在onclick主布局值已经消失这是完美的,之后我需要在那个地方看到两个子布局值,我尝试下面的代码,但子布局“隐藏”值单独显示,但我需要显示两个子布局值,如何完成。任何人都可以帮助我。

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

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

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

            <TextView
                android:id="@+id/invitation_place"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/black"
                android:textSize="15sp"
                android:paddingLeft="5dp"
                android:paddingRight="0dp"
                />
            <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_weight="1"
            android:clickable="false"
            android:paddingTop="1dp"
            android:visibility="gone"
            android:focusable="true"
            android:orientation="horizontal"
            android:weightSum="3"
            android:id="@+id/hidden"
            >


            <Button
                android:id="@+id/yesbutton"
                android:background="@color/blue"
                android:layout_width="78dp"
                android:layout_height="wrap_content"
                android:textColor="@color/black"
                android:text="Yes"
                android:layout_marginTop="50dp"
                android:layout_weight="1"
                android:layout_marginRight="30dp">
            </Button>
            <Button
                android:id="@+id/nobutton"
                android:background="@color/blue"
                android:textColor="@color/black"
                android:layout_width="62dp"
                android:layout_height="wrap_content"
                android:text="No"
                android:layout_marginTop="50dp"
                android:layout_weight="1"
                android:layout_marginRight="30dp">
            </Button>
            <Button
                android:id="@+id/buttonmaybe"
                android:background="@color/blue"
                android:textColor="@color/black"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:text="Maybe"
                android:layout_marginTop="50dp"
                android:layout_weight="1"
                android:layout_marginRight="32dp">
            </Button>
            <LinearLayout
                android:layout_width="0dp"
                android:layout_height="50dp"
                android:layout_weight="1"
                android:clickable="false"
                android:focusable="true"
                android:visibility="gone"
                android:orientation="vertical"
                android:id="@+id/hidden1"
                >
                <TextView
                    android:id="@+id/title"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:textColor="@color/black"
                    android:paddingLeft="5dp"
                    android:paddingRight="0dp"
                    android:paddingTop="3dp"
                    android:textSize="18sp"
                    android:textStyle="bold"

                    />

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

    </LinearLayout>
        </LinearLayout>

下面的代码是我的java代码,主要布局是“邀请单”,“隐藏”是我的第一个子布局,“hidden1”是第二个子布局,当iam onclick主要布局应该消失,子布局值需要可见,但当我点击主布局子布局“隐藏”单独可见,但我需要可见两个布局。

 final LinearLayout first=(LinearLayout)convertView.findViewById(R.id.invitation_single);//main layout
               final LinearLayout second = (LinearLayout)convertView.findViewById(R.id.hidden);//sub layout1
                final LinearLayout third = (LinearLayout)convertView.findViewById(R.id.hidden1);//sub layout2
                   first.setOnClickListener(new View.OnClickListener() {
                   @Override
                   public void onClick(View v) {
                      int visibility = second.getVisibility();
                       int visibility1=third.getVisibility();
                           if (visibility == View.GONE)
                           third.setVisibility(View.VISIBLE);
                           second.setVisibility(View.VISIBLE);

                          }

               });

1 个答案:

答案 0 :(得分:0)

首先,布局XML的格式很混乱!

格式错误使成为您的合作 德
很难 TO rea d,这使得它成为 ffic ult找到

修复哟乌尔虫子 !!!

干净地格式化您的xml,可以更轻松地查看您和我们正在发生的事情。

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

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

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

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_weight="1"
        android:clickable="false"
        android:paddingTop="1dp"
        android:visibility="gone"
        android:focusable="true"
        android:orientation="horizontal"
        android:weightSum="3"
        android:id="@+id/hidden">

        <Button
            android:id="@+id/yesbutton"
            android:background="@color/blue"
            android:layout_width="78dp"
            android:layout_height="wrap_content"
            android:textColor="@color/black"
            android:text="Yes"
            android:layout_marginTop="50dp"
            android:layout_weight="1"
            android:layout_marginRight="30dp"/>

        <Button
            android:id="@+id/nobutton"
            android:background="@color/blue"
            android:textColor="@color/black"
            android:layout_width="62dp"
            android:layout_height="wrap_content"
            android:text="No"
            android:layout_marginTop="50dp"
            android:layout_weight="1"
            android:layout_marginRight="30dp"/>

        <Button
            android:id="@+id/buttonmaybe"
            android:background="@color/blue"
            android:textColor="@color/black"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:text="Maybe"
            android:layout_marginTop="50dp"
            android:layout_weight="1"
            android:layout_marginRight="32dp"/>

         <LinearLayout
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:clickable="false"
            android:focusable="true"
            android:visibility="gone"
            android:orientation="vertical"
            android:id="@+id/hidden1">

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

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

        </LinearLayout>
    </LinearLayout>
</LinearLayout>

布局细分

  • 您的根布局invitation_single没有定义方向,因此默认为水平。
  • 水平invitation_single布局有4个直接子项。
  • 第一个直接子image设置为固定宽度。
  • 下两个invitation_titleinvitation_place的宽度设置为wrap_content
  • 第4个直接子项是名为hidden的LinearLayout。
    • 此LinearLayout的方向也是水平的。
    • 宽度设置为match_parent
    • layout_weight设置为1. 此布局将填充剩余的可用宽度空间
    • 此水平LinearLayout的weightSum设置为3.
    • 此水平LinearLayout有4个直接子项。
    • 前3个孩子是按钮。
      • 为3个按钮分配固定宽度。
      • 还为3个按钮分配了layout_weight为1。
      • 3个按钮的权重已经累计到它们所在的LinearLayout的weightSum。
    • 第四个直接孩子是名为hidden1的LinearLayout。
      • 此LinearLayout的方向是垂直的。
      • 宽度设置为0dp
      • layout_weight设置为1. 之前的3个按钮已经使用了所有可用的宽度空间,因此hidden1将保留宽度为0dp,这意味着您将看不到它。 /强>

查看此博客Android, LinearLayout Distribution Explained (weight and sizes)中的示例,以便更好地了解layout_weight的工作原理。