我有这个观点:
<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的宽度会根据其儿子的可见性而改变。
可能吗?
答案 0 :(得分:1)
问题出现在这里而不是隐藏你应该使用消失。
android:visibility="invisible"
将其更改为
android:visibility="gone"
消失值会删除占用的空间,并从父视图中查看它的自我,不可见会使它们隐藏,但占用的空间保持不变。
了解更多here
答案 1 :(得分:1)
要使隐藏按钮不被占用布局,您应该将可见性设置为gone
(View.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>