我正在使用ConstraintLayout,并且我想通过位于屏幕52%的按钮2为文本视图示例设置百分比边距顶部.
I am working with ConstraintLayout and I want to set a percentage margin top to the Textview Sample from the Button 2 placed at 52% of the screen.
与屏幕高度相比,当然是3%.
3% is of course compared to the height of the screen.
位置应相对于其他UI组件是相对的,准则仅应从屏幕顶部(或底部)引用
The position should be relative from another UI components, guidelines reference only from the top (or bottom) of the screen
是否可以通过xml 专有地执行此操作?
It's possible to do this exclusively via xml?
我知道可以以编程方式使用标准布局并具有重量的方式来执行此操作,但是我需要(如果存在)XML解决方案.
I know that is possibile to do this programmatically and with standard layouts with weight but I need (if exist) the XML solution.
代码:
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="schemas.android/apk/res/android" xmlns:app="schemas.android/apk/res-auto" xmlns:tools="schemas.android/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.constraint.Guideline android:id="@+id/guideline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.5" /> <Button android:id="@+id/button3" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginBottom="8dp" android:layout_marginTop="8dp" android:text="Button" app:layout_constraintBottom_toTopOf="@+id/guideline" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_marginTop="32dp" android:layout_weight="10" android:background="#00FF00" android:text="SAMPLE" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/button4" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_marginTop="8dp" android:text="BUTTON 2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline" /> </android.support.constraint.ConstraintLayout>推荐答案
经过研究,我终于找到了解决方法.
After some research I finally found a workaround.
使用ConstraintLayoutLibrary 1.1.0-beta的测试版,您可以以百分比模式定义高度.
With the beta version of the ConstraintLayoutLibrary 1.1.0-beta you can define the height in a percent mode.
app:layout_constraintHeight_default="percent" app:layout_constraintHeight_percent="0.03"因此,我创建了一个空视图来创建空间.无论如何,还没有一种在百分比模式下定义marginTop的方法.
So I created an empty view for create space. Anyway, there isn't yet a method to define the marginTop in percent mode.
所以对于我的具体情况:
So for my specific case:
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="schemas.android/apk/res/android" xmlns:app="schemas.android/apk/res-auto" xmlns:tools="schemas.android/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.constraint.Guideline android:id="@+id/guideline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.5" /> <Button android:id="@+id/button3" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginBottom="8dp" android:layout_marginTop="8dp" android:text="Button" app:layout_constraintBottom_toTopOf="@+id/guideline" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_weight="10" android:background="#00FF00" android:text="SAMPLE" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/spaceView" /> <View android:id="@+id/spaceView" android:layout_width="0dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:background="#FF0000" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHeight_percent="0.03" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/button4" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_marginTop="8dp" android:text="BUTTON 2" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/guideline" /> </android.support.constraint.ConstraintLayout>更多推荐
ConstraintLayout相对距离,以百分比%
发布评论