Высота EditText изменяется в зависимости от размера текста

Если я изменю размер текста в edittext, соответственно изменится высота edittext. Я хочу, чтобы размер edittext был таким же, и я хочу, чтобы в нем был подсказка или текст меньшего размера. Что я должен делать? Ниже приведен код, и я также публикую скриншот этого макета:

  <RelativeLayout
            android:id="@+id/normal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#4594e4"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/set"
                android:layout_width="wrap_content"
                android:layout_height="75dp"
                android:layout_marginTop="05dp"
                android:padding="5dp"
                android:src="@drawable/bari" />

            <EditText
                android:id="@+id/etOrigin"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginRight="@dimen/_35sdp"
                android:layout_marginTop="@dimen/_10sdp"
                android:layout_toEndOf="@+id/set"
                android:layout_toRightOf="@+id/set"
                android:background="#5fa7f1"
                android:inputType="textPersonName"
                android:text="My Location"
                android:textColor="#434343"
                android:textIsSelectable="true" />

            <EditText
                android:id="@+id/etDestination"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/etOrigin"
                android:layout_marginRight="@dimen/_35sdp"
                android:layout_marginTop="@dimen/_5sdp"
                android:layout_toEndOf="@+id/set"
                android:layout_toRightOf="@+id/set"
                android:background="#5fa7f1"
                android:inputType="textPersonName"
                android:onClick="wow"
                android:text="Where to go ?"
                android:textColor="#fff"
                android:textColorHint="#fff" />

            <ImageView
                android:id="@+id/swipe"
                android:layout_width="30dp"
                android:layout_height="27dp"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true"
                android:layout_marginRight="@dimen/_5sdp"
                android:background="@drawable/flip" />

        </RelativeLayout>

Скриншот макета до изменения:

Скриншот макета до изменения

Скриншот макета после изменения размера текста:

Скриншот макета после изменения размера текста


person Kylo Ren    schedule 22.02.2018    source источник
comment
использовать отступы в тексте редактирования   -  person Abhinav Gupta    schedule 22.02.2018
comment
Я предпочитаю набивку..   -  person Sachin Varma    schedule 22.02.2018
comment
используйте минимальную высоту edittext или установите фиксированную высоту.   -  person Hemant Parmar    schedule 22.02.2018
comment
Возможный дубликат Как сохранить размер Edittext? Android   -  person Rohan Kandwal    schedule 22.02.2018
comment
понял, ребята. Спасибо ;)   -  person Kylo Ren    schedule 22.02.2018


Ответы (6)


Используйте для этого отступы :-

         <EditText
            android:id="@+id/etOrigin"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="12dp"
            android:layout_marginRight="@dimen/_35sdp"
            android:layout_marginTop="@dimen/_10sdp"
            android:layout_toEndOf="@+id/set"
            android:layout_toRightOf="@+id/set"
            android:background="#5fa7f1"
            android:inputType="textPersonName"
            android:text="My Location"
            android:textColor="#434343"
            android:textIsSelectable="true" />
person Abhinav Gupta    schedule 22.02.2018
comment
Как это работает? Я думаю, он просто добавляет отступы, но не устанавливает высоту для любого размера шрифта. - person CoolMind; 23.11.2018
comment
@CoolMind, это было обработано андроидом - person Abhinav Gupta; 23.11.2018
comment
@AbhinavGupta, он добавляет только отступы. Он не устанавливает высоту. Итак, если мы изменим размер текста, высота EditText изменится. - person CoolMind; 23.11.2018
comment
@CoolMind да, это изменится, потому что textSize по умолчанию имеет 16sp, если вы увеличите высоту более чем на 16sp, она изменится в соответствии с textsize .... - person Abhinav Gupta; 23.11.2018

Попробуйте использовать атрибуты android:minHeight и android:maxHeight:

                            <EditText
                            android:id="@+id/etUserName"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:hint="@string/hint_username"
                            android:imeOptions="actionNext"
                            android:inputType="textPersonName"
                            android:maxLines="1"
                            android:gravity="center_vertical"
                            android:minHeight="?actionBarSize"
                            android:maxHeight="?actionBarSize"
                            android:textColor="@color/textPrimary"
                            android:textSize="12sp"/>

                            <EditText
                            android:id="@+id/etUserEmail"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:hint="@string/hint_username"
                            android:imeOptions="actionNext"
                            android:inputType="textEmailAddress"
                            android:maxLines="1"
                            android:gravity="center_vertical"
                            android:minHeight="?actionBarSize"
                            android:maxHeight="?actionBarSize"
                            android:textColor="@color/textPrimary"
                            android:textSize="14sp"/>
person Deep Patel    schedule 22.02.2018
comment
Туалет, приятель! Спасибо и за вашу оценку - person Deep Patel; 23.02.2018
comment
Спасибо! minHeight достаточно. - person CoolMind; 23.11.2018
comment
Туалет, приятель! Удачного кодирования!! - person Deep Patel; 23.11.2018

Задайте фиксированную высоту для макета android:layout_height="75dp"

            <EditText
            android:id="@+id/etOrigin"
            android:layout_width="match_parent"
            android:layout_height="75dp"
            android:layout_marginRight="@dimen/_35sdp"
            android:layout_marginTop="@dimen/_10sdp"
            android:layout_toEndOf="@+id/set"
            android:layout_toRightOf="@+id/set"
            android:background="#5fa7f1"
            android:inputType="textPersonName"
            android:text="My Location"
            android:textColor="#434343"
            android:textIsSelectable="true"/>                  
person Ankita Chavan    schedule 22.02.2018
comment
Это то, чего я не хочу делать на самом деле. Я хочу, чтобы он настраивался на всех устройствах - person Kylo Ren; 22.02.2018
comment
Затем напишите для него стиль и задайте разную высоту для каждого размера экрана. как для hdpi android:layout_height=75dp для mdpi android:layout_height=60dp xhdpi android:layout_height=90dp - person Ankita Chavan; 22.02.2018

Вот, попробуйте эту стороннюю библиотеку. Ваша высота TextView будет фиксированной, но размер вашего textView будет скорректирован

dependencies {
    compile 'me.grantland:autofittextview:0.2.+'
}

Включите любой вид, расширяющий TextView в коде:

AutofitHelper.create(textView);

Включите любой вид, расширяющий TextView в XML:

<me.grantland.widget.AutofitLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        />
</me.grantland.widget.AutofitLayout>

Используйте встроенный виджет в коде или XML:

<RootElement
    xmlns:autofit="http://schemas.android.com/apk/res-auto"
    ...
<me.grantland.widget.AutofitTextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:singleLine="true"
    android:maxLines="2"
    android:textSize="40sp"
    autofit:minTextSize="16sp"
    />

Для получения дополнительной информации перейдите по ссылке ниже:

https://github.com/grantland/android-autofittextview

person Rahul Chandrabhan    schedule 22.02.2018

Вы можете явно указать высоту и размер вашего представления EditText, а также текста в нем.

Чтобы установить высоту EditText, просто используйте:

android:layout_height="<height_you_want>dp"

И чтобы установить высоту текста в вашем представлении EditText:

android:textSize="<height_you_want>sp"

И вы можете одновременно просматривать изменения на вкладке предварительного просмотра AndroidStudio.

person zeekhuge    schedule 22.02.2018
comment
Я знаю это, но в этом случае, если устройство имеет более высокое разрешение или больший размер экрана, высота макета останется прежней, которую я хочу изменить в соответствии с размером экрана. - person Kylo Ren; 22.02.2018
comment
В этом случае вы можете увидеть это. Подводя итог, единица измерения dp равна density independent pixel, и она будет идеально масштабироваться на экранах с различной плотностью пикселей, которые в основном представляют размер (разрешение) экрана. - person zeekhuge; 22.02.2018
comment
И вы можете создать разные макеты для mdpi, ldpi, hdpi, xhdpi и xxhdpi, если это вас беспокоит. Посмотрите здесь - person zeekhuge; 22.02.2018
comment
Я знал о mdpi и hdpi и т. д., но не знал, что dp не зависит от плотности. Большое спасибо - person Kylo Ren; 22.02.2018

Одно решение: включите эти две строки в свой файл XML.

android:maxLines=1 android:singleLine=true

person Akash Jaiswal    schedule 30.06.2021