当内部元素被移除/隐藏/调整大小时,Cardview不会自行调整大小

时间:2016-12-13 08:34:12

标签: java android xml

我已按以下方式创建了cardview。所有字段都会在Web服务的响应中填充。但是根据填充的数据,cardview没有调整大小。

对于textview,它会在数据下方留出一些空间。

<android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/cv2"
        android:elevation="20dp"
        android:layout_marginTop="1dp"
        app:cardCornerRadius="0dp"
        >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="16dp"
            android:id="@+id/Lin2"
            android:layout_marginTop="30dp"
            android:orientation="vertical"
            android:animateLayoutChanges="true"
            android:visibility="visible"
            android:weightSum="100">

            <AutoCompleteTextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/prompt_username"
                android:id="@+id/usernameTextView"
                android:layout_marginTop="10dp"
                android:layout_weight="20"
                android:minHeight="50dp"
                android:minLines="1" />
            <AutoCompleteTextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:password="true"
                android:hint="Password"
                android:id="@+id/passwordTextView"
                android:layout_weight="20"
                android:minHeight="50dp"
                android:minLines="1" />

            <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Update"
                android:id="@+id/updateBtn"
                android:background="@drawable/button_border"
                android:textColor="#005AB4"
                android:layout_weight="20"/>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="40"
                android:id="@+id/credsNote"
                android:textSize="14sp"
                android:text=""
                android:layout_marginTop="10dp"
                android:layout_marginBottom="10dp"
                android:maxLines="7"
                android:soundEffectsEnabled="true" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="16dp"
            android:orientation="horizontal"
            android:id="@+id/cvLin2"
            android:weightSum="100"
            >

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/cv2Btn"
                android:src="@drawable/cancel"
                android:layout_weight="20"
                />
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/cv2Title"
                android:textSize="18sp"
                android:layout_gravity="center"
                android:layout_marginLeft="20dp"
                android:text="Credentials"
                android:layout_weight="80"
                />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/cv2ImgHazard"
                android:src="@drawable/hazard_yellow"
                android:layout_weight="20"
                />

        </LinearLayout>

    </android.support.v7.widget.CardView>

填充数据的Java代码

                        usernameTxt = (AutoCompleteTextView)findViewById(R.id.usernameTextView);
                        passwordTxt = (AutoCompleteTextView)findViewById(R.id.passwordTextView);
                        usernameTxt.setText(username);
                        passwordTxt.setText(password);
                        String message = "All set here!";
                        credsNote = (TextView)findViewById(R.id.credsNote);
                        credsNote.setText(message);
                        credsNote.setMinLines((1));
                        credsNote.setMaxLines((1));
                        int height_in_pixels = credsNote.getLineCount() * credsNote.getLineHeight(); //approx height text
                        credsNote.setHeight(height_in_pixels);
                        Drawable res = getResources().getDrawable(R.drawable.tick);
                        credStat = (ImageView)findViewById(R.id.cv2ImgHazard);
                        credStat.setImageDrawable(res);

请检查下面的图片,以便更好地了解问题。 如何解决这个问题?

Head part issue

Bottom space issue

1 个答案:

答案 0 :(得分:0)

我认为您正在使用隐藏元素。

elment.setVisibility(View.INVISIBLE);

改为使用:

elment.setVisibility(View.GONE);

它的工作原理如下:

View.VISIBLE 视图可见。

View.INVISIBLE 视图不可见,但仍会使用通常占用的任何间距。它的“隐形”

View.GONE 视图消失了,您无法看到它并且不会占用“点”。