仅包装可见内容

时间:2017-12-02 16:36:52

标签: android android-layout

我有这个观点:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:descendantFocusability="blocksDescendants">

    <LinearLayout
        android:id="@+id/ll1"
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_toStartOf="@+id/ll2"
        android:layout_alignParentStart="true">

        <TextView android:id="@android:id/text1"
            android:textSize="16sp"
            android:textStyle="bold"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <TextView android:id="@android:id/text2"
            android:textSize="16sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <TextView android:id="@+id/text3"
            android:textSize="16sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/ll15"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toStartOf="@id/ll2">

    <ImageView
        android:id="@+id/rc_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_rc_flag"
        android:contentDescription="@string/view_only_content_description"
        android:visibility="visible" />
    </LinearLayout>
    <LinearLayout
        android:id="@+id/ll2"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true">

    <ImageButton
        android:id="@+id/view_only_event_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_visibility_black_24dp"
        android:contentDescription="@string/view_only_content_description"
        android:visibility="invisible" />
    <ImageButton
        android:id="@+id/delete_event_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_delete_black_24dp"
        android:contentDescription="@string/delete_content_description"
        android:visibility="invisible" />
    </LinearLayout>
</RelativeLayout>

通过java代码我可以看到这个图像和图像按钮的可见性:

  
      
  • @ + ID / rc_icon
  •   
  • @ + ID / view_only_event_button
  •   
  • @ + ID / delete_event_button
  •   

我希望按钮彼此靠近并靠近视图的远端。 问题是,现在当按钮不可见时,它的位置在屏幕上仍然是空的。

我正在跳过 @ + id / ll2 布局,wrap_content的宽度会根据其儿子的可见性而改变。

可能吗?

3 个答案:

答案 0 :(得分:1)

问题出现在这里而不是隐藏你应该使用消失

android:visibility="invisible"

将其更改为

android:visibility="gone"

消失值会删除占用的空间,并从父视图中查看它的自我,不可见会使它们隐藏,但占用的空间保持不变。

了解更多here

答案 1 :(得分:1)

要使隐藏按钮不被占用布局,您应该将可见性设置为goneView.GONE),而不是invisible

答案 2 :(得分:1)

你需要让你的视图可见性为GONE而不是INVISIBLE,如下所示: -

我正在使用您的代码,请查看

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:descendantFocusability="blocksDescendants">

<LinearLayout
    android:id="@+id/ll1"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_toStartOf="@+id/ll2"
    android:layout_alignParentStart="true">

    <TextView android:id="@android:id/text1"
        android:textSize="16sp"
        android:textStyle="bold"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <TextView android:id="@android:id/text2"
        android:textSize="16sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <TextView android:id="@+id/text3"
        android:textSize="16sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
    android:id="@+id/ll15"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toStartOf="@id/ll2">

<ImageView
    android:id="@+id/rc_icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@mipmap/ic_rc_flag"
    android:contentDescription="@string/view_only_content_description"
    android:visibility="visible" />
</LinearLayout>
<LinearLayout
    android:id="@+id/ll2"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true">

<ImageButton
    android:id="@+id/view_only_event_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_visibility_black_24dp"
    android:contentDescription="@string/view_only_content_description"
    android:visibility="gone" />
<ImageButton
    android:id="@+id/delete_event_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_delete_black_24dp"
    android:contentDescription="@string/delete_content_description"
    android:visibility="gone" />
</LinearLayout>