包装仅可见内容

问题描述:

我有这样的看法:包装仅可见内容

<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宽度会根据其子的可见性而改变。

是可能的吗?

问题是在这里,而不是隐形你应该使用不见了就是这样。

android:visibility="invisible" 

将其更改为

android:visibility="gone" 

价值消除占领以及查看空间是从父视图自身和无形使它们隐藏起来,但占用的空间保持不变。

更多here

,使按钮没有被占用布局时看不见你应该设置能见度goneView.GONE)代替,不invisible

你需要让你的看法知名度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>