我有一个应该在布局中居中的元素,以及一个尺寸正确的按钮。按钮的宽度是可变的。
以下设计举例说明了两种情况。
当前解决方案的左侧是一个不可见的重复按钮。这是不理想的,因为按钮的外观在不同的区域也可能有所不同。我已经尝试过指南,但是这需要定义一个百分比,并且如果它是动态的,我会更喜欢。障碍似乎也不起作用,因为我需要对其进行镜像。
任何提示如何实现这一目标?
答案 0 :(得分:1)
尝试使用0dp进行宽度设置并赋予其权重,然后在运行时进行更改 可能是因为它们是水平的线性布局。
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)
button.getLayoutParams();
params.weight = 1.0f; // afterwards you can do the same with changing the weight
button.setLayoutParams(params);
答案 1 :(得分:1)
也许您可以利用ConstraintLayoutStates: https://riggaroo.co.za/constraintlayout-constraintlayoutstates/
每种情况都有两种布局。
答案 2 :(得分:1)
我最终使用了另一种解决方案。我使用了两个准则(一个为20%,另一个为80%)来定义按钮可以扩展到的区域。
当没有可用的按钮时,我使用了app:layout_constrainedWidth="false"
属性,该属性将忽略约束并允许标题扩展到可用空间。
我之所以使用此解决方案,是因为我可能需要根据所选择的语言使用多个具有不同操作调用按钮的按钮。管理多个隐藏的锚点按钮将很困难。
答案 3 :(得分:0)
如果我正确理解了您的图片,则希望在屏幕上显示两个元素:
一个位于屏幕中央的视图,它可以是任何宽度的大小。
位于视图右侧的按钮,也可以是任何宽度大小。您希望此按钮位于“视图”和右侧屏幕边缘之间的空白处。
您可以尝试以下方法:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:id="@+id/view"
android:layout_width="100dp"
android:layout_height="100dp"
android:gravity="center"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:text="1"
android:textColor="#FFFFFF"
android:background="#000000"
/>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/view"
app:layout_constraintEnd_toEndOf="parent"
android:text="2"
/>
</androidx.constraintlayout.widget.ConstraintLayout>