为什么在 android 中将 Width 和 Height 设置为 wrap_content 后,我的 EditText 会水平或垂直扩展?

Why does my EditText got expanded horizontally or vertically after setting Width and Height as wrap_content in android?

我是 android 的新手。所以我正在努力解决以下问题。

1.after在EditText中设置android:layout_width = "wrap_content",垂直展开。

2.after在EditText中设置android:layout_width="180dp",水平展开。

有什么方法可以修复我的 EditText 吗?例如:如果我要在 EditText 中键入一个长电子邮件地址,文本的字体大小应该根据长文本缩小而不是 EditText 扩大。有没有可能完成这个任务?

这是我的代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"                            android:layout_width="match_parent"
android:layout_height="match_parent" 

tools:context="com.vadmin.myrx.SendReport">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Doctor Email"
    android:textStyle="bold"
    android:id="@+id/textView1"
    android:layout_marginTop="75dp"
    android:layout_marginLeft="25dp"
    android:layout_marginStart="25dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:hint="example@xyz.com"
    android:padding="3dp"
    android:background="@drawable/text_oval"
    android:id="@+id/textView2"
    android:layout_alignBottom="@+id/textView1"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Phone"
    android:textStyle="bold"
    android:id="@+id/textView3"
    android:layout_marginRight="24dp"
    android:layout_marginEnd="24dp"
    android:layout_marginTop="44dp"
    android:layout_below="@+id/textView1"
    android:layout_alignRight="@+id/textView1"
    android:layout_alignEnd="@+id/textView1" />

<EditText
    android:layout_width="180dp"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:hint="+91 0000 000 000"
    android:padding="3dp"
    android:id="@+id/textView4"
    android:layout_alignTop="@+id/textView3"
    android:layout_alignLeft="@+id/textView2"
    android:layout_alignStart="@+id/textView2"
    android:background="@drawable/text_oval"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Report"
    android:textStyle="bold"
    android:id="@+id/textView5"
    android:layout_marginTop="45dp"
    android:layout_below="@+id/textView4"
    android:layout_alignRight="@+id/textView3"
    android:layout_alignEnd="@+id/textView3" />

<Spinner
    android:layout_width="250dp"
    android:layout_height="48dp"
    android:id="@+id/spinner"
    android:spinnerMode="dropdown"
    android:background="@android:drawable/btn_dropdown"
    android:layout_alignTop="@+id/textView5"
    android:layout_alignLeft="@+id/textView4"
    android:layout_alignStart="@+id/textView4" />

   <Button
       android:layout_width="wrap_content"
       android:layout_height="40dp"
       android:text="Save"
       android:layout_marginTop="57dp"
       android:id="@+id/button"
       android:layout_below="@+id/spinner"
       android:layout_toRightOf="@+id/textView3"
       android:layout_toEndOf="@+id/textView3"
       android:textColor="#000000"
        android:background="@drawable/oval"

       />

谢谢 梅艳芳

Libraries For Developers 中,您会在 Whosebug 中找到多个 AutoScaleTextView 变体和几个实现此目的的代码片段(如果我理解正确的话)

您可以通过在您的布局中替换来尝试此操作

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Doctor Email"
        android:textStyle="bold"
        android:id="@+id/textView1"
        android:layout_marginTop="75dp"
        android:layout_marginLeft="25dp"
        android:layout_marginStart="25dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:hint="example@xyz.com"
        android:padding="3dp"
        android:layout_toEndOf="@id/textView1"
        android:singleLine="true"
        android:background="@drawable/text_oval"
        android:id="@+id/textView2"
        android:layout_alignBottom="@+id/textView1"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:text="" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Phone"
        android:textStyle="bold"
        android:id="@+id/textView3"
        android:layout_marginRight="24dp"
        android:layout_marginEnd="24dp"
        android:layout_marginTop="44dp"
        android:layout_below="@+id/textView1"
        android:layout_alignRight="@+id/textView1"
        android:layout_alignEnd="@+id/textView1" />

    <EditText
        android:layout_width="180dp"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:hint="+91 0000 000 000"
        android:padding="3dp"
        android:layout_toEndOf="@id/textView3"
        android:singleLine="true"
        android:id="@+id/textView4"
        android:layout_alignTop="@+id/textView3"
        android:layout_alignLeft="@+id/textView2"
        android:layout_alignStart="@+id/textView2"
        android:background="@drawable/text_oval"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Report"
        android:textStyle="bold"
        android:id="@+id/textView5"
        android:layout_marginTop="45dp"
        android:layout_below="@+id/textView4"
        android:layout_alignRight="@+id/textView3"
        android:layout_alignEnd="@+id/textView3" />

    <Spinner
        android:layout_width="250dp"
        android:layout_height="48dp"
        android:id="@+id/spinner"
        android:spinnerMode="dropdown"
        android:background="@android:drawable/btn_dropdown"
        android:layout_alignTop="@+id/textView5"
        android:layout_alignLeft="@+id/textView4"
        android:layout_alignStart="@+id/textView4" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:text="Save"
        android:layout_marginTop="57dp"
        android:id="@+id/button"
        android:layout_below="@+id/spinner"
        android:layout_toRightOf="@+id/textView3"
        android:layout_toEndOf="@+id/textView3"
        android:textColor="#000000"
        android:background="@drawable/oval"

        />

将您的 EditText 替换为以下代码:

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:hint="example@xyz.com"
    android:padding="3dp"
    android:background="@drawable/text_oval"
    android:id="@+id/textView2"
    android:layout_alignBottom="@+id/textView1"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:singleLine="true"
    android:ems="10"
    android:layout_toRightOf="@+id/textView1"
    android:layout_toEndOf="@+id/textView1"
    />

使用此布局代替您的布局:

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.vadmin.myrx.SendReport" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:orientation="horizontal"
        android:weightSum="2" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="60dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="2dp"
            android:text="Doctor Email"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textSize="15sp"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="2dp"
            android:layout_weight="1"
            android:hint="example@xyz.com"
            android:inputType="textWebEmailAddress"
            android:maxLength="20"
            android:padding="3dp"
            android:singleLine="true"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:orientation="horizontal"
        android:weightSum="2" >

        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:text="Phone"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textSize="15sp"
            android:textStyle="bold" />

        <EditText
            android:id="@+id/textView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="2dp"
            android:layout_weight="1"
            android:hint="+91 0000 000 000"
            android:maxLength="12"
            android:inputType="phone"
            android:padding="3dp"
            android:singleLine="true"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/textView5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginRight="2dp"
            android:text="Report"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textSize="15sp"
            android:textStyle="bold" />

        <Spinner
            android:id="@+id/spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="2dp"
            android:spinnerMode="dropdown" />
    </LinearLayout>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_below="@+id/spinner"
        android:layout_gravity="center"
        android:layout_marginTop="57dp"
        android:layout_toEndOf="@+id/textView3"
        android:layout_toRightOf="@+id/textView3"
        android:text="Save"
        android:textColor="#000000" />

</LinearLayout>

我已经使用了你的XML并修改了它。只需添加您的图像。我删除了它,因为我没有它们。

EDIT:我也为 editTexts 添加了 android:inputType + 并限制了 phone 号码 (12) 和电子邮件 (20),你可以根据自己改变它们。

在 TextView 上设置以下 属性 为我解决了这个奇怪的问题。在我看来,这应该是 textview 的默认行为。

android:imeOptions="flagNoExtractUi"