Android如何设置百分比填充/保证金,所以EditText在两边都有10%的保证金?

Android支持%或有一种方法来近似。 我有两种截然不同的屏幕尺寸,但是按百分比计算,我希望活动中的EditBox对屏幕尺寸和屏幕尺寸的比例具有相同的边距。 如何才能做到这一点。

Solutions Collecting From Web of "Android如何设置百分比填充/保证金,所以EditText在两边都有10%的保证金?"

它并不真正支持按百分比设置值(除了一些xmlanimation文件似乎)如果你死了使用百分比的最佳方式,我能想到的是从Java调用getWidth和getHeight然后乘以你的十进制,并用setMargin()或setPadding()设置结果。

通过将您的EditText包装在LinearLayout中,这在XML中是可行的:

<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="10" android:gravity="center" > <EditText android:layout_height="wrap_content" android:layout_width="0dip" android:layout_weight="8" /> </LinearLayout> 

编辑:从这个答案的布局现在不推荐使用。 使用Eugene Brusov提出的解决scheme。 另外,感谢chancywu的评论。


现在有一个更好的方法来支持库版本23.0.0(关于时间,对吗?)。 您现在可以使用PercentFrameLayout或PercentRelativeLayout 。

如果您希望EditText是屏幕宽度的80%,两边都有10%的边距,代码如下所示:

 <android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:layout_height="wrap_content" app:layout_widthPercent="80%" app:layout_marginStartPercent="10%" app:layout_marginEndPercent="10%"/> </android.support.percent.PercentRelativeLayout> 

你也可以看看PercentLayoutHelper.PercentLayoutParams

在ConstraintLayout中引入Guideline是可能的。

例如,您可以将EditText顶部放置在屏幕高度的25%处,并以20%的屏幕宽度左右放置:

布局编辑器

这里的布局来源:

 <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:id="@+id/editText" android:layout_width="0dp" android:layout_height="wrap_content" android:ems="10" android:inputType="textPersonName" android:text="Name" app:layout_constraintLeft_toLeftOf="@+id/left_guideline" app:layout_constraintRight_toLeftOf="@+id/right_guideline" app:layout_constraintTop_toTopOf="@+id/top_guideline" /> <android.support.constraint.Guideline android:id="@+id/top_guideline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_percent="0.25" /> <android.support.constraint.Guideline android:id="@+id/left_guideline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.2" /> <android.support.constraint.Guideline android:id="@+id/right_guideline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.8" /> </android.support.constraint.ConstraintLayout>