Подтвердить что ты не робот

Android, как мне установить процентное дополнение/маржу, так что EditText имеет 10% -ный запас с обеих сторон?

Поддерживает ли поддержка android% или есть способ приблизиться. У меня два разных размера экрана, и я, но в процентах, хочу, чтобы EditBox в активности имел одинаковый размер для обоих размеров экрана в пропорции к размеру экрана. Как это может быть сделано.

4b9b3361

Ответ 1

Он действительно не поддерживает установку значений на проценты (за исключением некоторых файлов анимации xml). Если вы мертвы, используя процент, лучший способ, о котором я могу думать, - это использовать java-вызов getWidth и getHeight, а затем умножить те по десятичной и установить результат с помощью setMargin() или setPadding().

Ответ 2

Это возможно в XML, обернув ваш EditText внутри LinearLayout:

<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>

Ответ 3

Изменение: макеты из этого ответа теперь устарели. Используйте решение, предложенное Евгением Брюсовым. Также, спасибо 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

Ответ 4

Это возможно с Guideline, представленным в ConstraintLayout.

Например, вы можете поместить верхнюю часть EditText на 25% высоты экрана, а слева и справа на 20% ширины экрана:

Layout Editor

Вот источник макета:

<androidx.constraintlayout.widget.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" />

    <androidx.constraintlayout.widget.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" />

    <androidx.constraintlayout.widget.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" />

    <androidx.constraintlayout.widget.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" />

</androidx.constraintlayout.widget.ConstraintLayout>