根据文本大小调整EditText高度

7
如果我改变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>

更改前布局的截图:

更改前布局的截图

更改文本大小后的布局截图:

更改文本大小后的布局截图


2
在 EditText 中使用填充。 - Abhinav Gupta
3
我会更喜欢加填补(垫子)... - Sachin Varma
1
使用EditText的最小高度或设置固定高度。 - Hemant Parmar
2
可能是如何使EditText大小保持不变?Android的重复问题。 - Rohan Kandwal
明白了,谢谢大家;) - Kylo Ren
7个回答

4
尝试使用android:minHeightandroid: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"/>

嗨,伙计!谢谢你的赞赏。 - Deep Patel
1
谢谢!minHeight就够了。 - CoolMind
1
哇塞,伙计!愉快编码!! - Deep Patel

3
请使用填充(padding)进行处理:-
         <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" />

它是如何工作的?我认为它只是添加填充,但不为任何字体大小设置高度。 - CoolMind
@CoolMind 这是由 Android 处理的。 - Abhinav Gupta
@AbhinavGupta,它只添加填充,而不设置高度。因此,如果我们更改文本大小,EditText的高度将会改变。 - CoolMind
@CoolMind 是的,它会改变,因为默认的textSize是16sp,如果你增加到超过16sp,高度将根据textsize改变... - Abhinav Gupta

2

为布局设置固定高度 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"/>                  

这实际上不是我想要做的。我希望它在所有设备上都可以调整。 - Kylo Ren
1
然后编写样式并为每个屏幕大小设置不同的高度。 例如,对于hdpi android:layout_height =“75dp”,对于mdpi android:layout_height =“60dp”,xhdpi android:layout_height =“90dp”。 - Ankita Chavan

2

这里,试试这个第三方库。 你的TextView高度将被固定,但是你的textView大小会自动调整。

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

在代码中启用任何扩展TextView的视图:

AutofitHelper.create(textView);

在XML中启用任何扩展TextView的视图:

<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


1
你可以明确设置EditText视图的高度和大小,以及其中的文本。
要设置EditText的高度,只需使用以下代码:
android:layout_height="<height_you_want>dp"

要设置您的EditText视图中文本的高度:

android:textSize="<height_you_want>sp"

同时,您可以在Android Studio的预览选项卡中查看更改。

我知道这一点,但如果设备具有更高的分辨率或更大的屏幕尺寸,则布局高度将保持不变,而我希望根据屏幕尺寸进行更改。 - Kylo Ren
1
在这种情况下,您可能想查看此链接。简单总结一下,dp是“密度无关像素”,它可以在具有不同像素密度(即屏幕大小(分辨率))的屏幕上完美缩放。 - zeekhuge
1
如果这是一个大问题,您可以为 mdpildpihdpixhdpixxhdpi 创建不同的布局。请参考这里 - zeekhuge
我知道mdpi和hdpi等,但不知道dp是密度无关的。非常感谢。 - Kylo Ren

0
一个解决方案:在你的XML文件中包含以下两行代码

android:maxLines="1" android:singleLine="true"


0
使用ConstraintLayout中的EditText将解决此问题。
...
<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="17">
    <androidx.appcompat.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="0dp"                        
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHeight_percent="1"
        android:textSize="24sp"
        android:text="foo"
    />
</androidx.constraintlayout.widget.ConstraintLayout>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接