android支持%或有没有办法近似。我有两个非常不同的屏幕尺寸,但我百分比方面我希望活动中的EditBox具有相同的屏幕尺寸和屏幕尺寸比例的余量。如何才能做到这一点。
答案 0 :(得分:32)
它实际上并不支持按百分比设置值(某些xml动画文件似乎除外)如果您使用百分比设置为死,我能想到的最好的方法是从java调用getWidth和getHeight然后乘以那些用你的小数,用setMargin()或setPadding()设置结果。
答案 1 :(得分:31)
通过将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>
答案 2 :(得分:22)
编辑:此答案的布局现已弃用。使用Eugene Brusov提出的解决方案。另外,感谢您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>
答案 3 :(得分:8)
可以在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>