Java 如何有条件地“删除”或隐藏按钮?
我有一个包含回收视图的片段 在recyclerView中单击某个项目时,我将recyclerView项目背景设置为绿色,并将saveBtn文本更改为更新 我还需要能够在用户每次单击recyclerView项目时删除deletebtn,或者将其隐藏,以便UI看起来像这样: 这怎么可能呢 我用于在recyclerView单击时更新UI的方法 XML 将LinearLayout用作ConstraintLayout的直接子级会破坏使用ConstraintLayout的整个目的。从性能的角度来看,使用嵌套布局不是一个好的做法。此外,如果deleteBtn是ConstraintLayout的直接子级,那么如果我们将deleteBtn的可见性更改为“消失”,则将saveBtn的布局宽度设置为“匹配”constraint将使其占据整个空间。使用LinearLayout作为ConstraintLayout的直接子级将无法达到使用ConstraintLayout的全部目的。从性能的角度来看,使用嵌套布局不是一个好的做法。此外,如果deleteBtn是ConstraintLayout的直接子级,那么如果我们将deleteBtn的可见性更改为gone,那么将saveBtn的布局宽度设置为match constraint将使其占据整个空间。的答案很好,这是推荐的方法,因为您的根视图组是ConstraintLayout。但是,我想向您介绍一种使用当前线性布局方法实现此目的的替代方法 您所需要做的就是将两个底部的宽度设置为0dp。这样一来,它们的重量将决定它们所占据的空间大小。如果两个视图都可见,则每个视图将占屏幕总宽度的50%。如果只有一个按钮可见,它将占据整个屏幕。下面是一段代码片段,可以指导您:Java 如何有条件地“删除”或隐藏按钮?,java,android,xml,android-xml,Java,Android,Xml,Android Xml,我有一个包含回收视图的片段 在recyclerView中单击某个项目时,我将recyclerView项目背景设置为绿色,并将saveBtn文本更改为更新 我还需要能够在用户每次单击recyclerView项目时删除deletebtn,或者将其隐藏,以便UI看起来像这样: 这怎么可能呢 我用于在recyclerView单击时更新UI的方法 XML 将LinearLayout用作ConstraintLayout的直接子级会破坏使用ConstraintLayout的整个目的。从性能的角度来看,使用嵌套
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:orientation="horizontal">
<Button
android:id="@+id/save_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:background="@drawable/my_small_green_shape"
android:text="Save"
android:textColor="#ffffff"
android:textSize="20sp" />
<Button
android:id="@+id/clear_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:background="@drawable/my_small_red_shape"
android:text="Clear"
android:textColor="#ffffff"
android:textSize="20sp" />
</LinearLayout>
并不是说这种方法涉及到嵌套布局,而且从长远来看,这可能会影响性能,并且会很快使布局代码复杂化。的答案很好,这是推荐的方法,因为您的根视图组是ConstraintLayout。但是,我想向您介绍一种使用当前线性布局方法实现此目的的替代方法
您所需要做的就是将两个底部的宽度设置为0dp。这样一来,它们的重量将决定它们所占据的空间大小。如果两个视图都可见,则每个视图将占屏幕总宽度的50%。如果只有一个按钮可见,它将占据整个屏幕。下面是一段代码片段,可以指导您:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:orientation="horizontal">
<Button
android:id="@+id/save_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:background="@drawable/my_small_green_shape"
android:text="Save"
android:textColor="#ffffff"
android:textSize="20sp" />
<Button
android:id="@+id/clear_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:background="@drawable/my_small_red_shape"
android:text="Clear"
android:textColor="#ffffff"
android:textSize="20sp" />
</LinearLayout>
并不是说这种方法涉及到嵌套布局,而且从长远来看,这可能会影响性能,并且会使布局代码非常快地复杂化。将LinearLayout用作ConstraintLayout的直接子级会破坏使用ConstraintLayout的整个目的。从性能的角度来看,使用嵌套布局不是一个好的做法。此外,如果deleteBtn是ConstraintLayout的直接子级,那么如果我们将deleteBtn的可见性更改为gone,则将saveBtn的布局宽度设置为与约束匹配,将使其占用整个空间。谢谢,太好了。请您将此作为一个答案,以便我可以接受它是正确的吗?使用LinearLayout作为ConstraintLayout的直接子对象会破坏使用ConstraintLayout的整个目的。从性能的角度来看,使用嵌套布局不是一个好的做法。此外,如果deleteBtn是ConstraintLayout的直接子级,那么如果我们将deleteBtn的可见性更改为gone,则将saveBtn的布局宽度设置为与约束匹配,将使其占用整个空间。谢谢,太好了。请你把这个作为一个答案,这样我就可以接受它是正确的吗?
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:orientation="horizontal">
<Button
android:id="@+id/save_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:background="@drawable/my_small_green_shape"
android:text="Save"
android:textColor="#ffffff"
android:textSize="20sp" />
<Button
android:id="@+id/clear_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_weight="1"
android:background="@drawable/my_small_red_shape"
android:text="Clear"
android:textColor="#ffffff"
android:textSize="20sp" />
</LinearLayout>