Android 仅包装可见内容

Android 仅包装可见内容,android,android-layout,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="blocksDes

我有这样的看法:

<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_图标
  • @+id/仅查看事件按钮
  • @+id/删除事件按钮
我希望按钮彼此靠近,靠近视图的远端。 问题是现在当一个按钮不可见时,它在屏幕上的位置仍然是空的

我正在跳过@+id/ll2布局包装内容宽度将根据其子对象的可见性而改变


有可能吗?

问题在这里,而不是看不见的你应该使用gone就是这样

android:visibility="invisible"
换成

android:visibility="gone"
消失值从父视图中移除占用的空间及其自身视图,不可见使其隐藏,但占用的空间保持不变


阅读更多

要使按钮在不可见时不被占用布局,您应该将可见性设置为
消失(
查看。消失
),而不是
不可见
您需要使视图的可见性消失,而不是像这样不可见:-

我在用你的代码,看看这个

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