【问题标题】:Multiple lines in edittext changes the layoutedittext 中的多行更改布局
【发布时间】:2023-04-04 00:45:01
【问题描述】:

我正在开发我的第一个 android 应用程序。我的 xml 布局文件同时具有相对布局和线性布局。我的根布局是相对布局,其中包含文本视图、按钮和编辑文本以及另外 2 个相对布局。在我的第一个相对布局中,我在它下面有一个编辑文本,我有按钮和开关。当我在edittext中输入超过1行的数据时,我的按钮并在其下方切换重叠。

如何让我的 edittext 接受超过 1 行而不更改其下方小部件的布局?

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:id="@+id/relative1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/blue3"  >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Name"
    android:id="@+id/textView5"
    android:layout_marginLeft="10dp"
    android:layout_alignBottom="@+id/taskname"
    android:layout_alignStart="@+id/textView7" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/taskname"
    android:hint="@string/hint_name"
    android:layout_marginTop="37dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentEnd="true"
    android:layout_toEndOf="@+id/textView7">
    <requestFocus />
</EditText>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Set Location"
    android:id="@+id/textView6"
    android:layout_alignTop="@+id/button5"
    android:layout_toStartOf="@+id/taskname"
    android:layout_marginTop="20dp"
    android:layout_marginLeft="10dp"
    android:layout_alignEnd="@+id/textView7" />

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Set"
    android:src="@drawable/pin1"
    android:id="@+id/button5"
    android:onClick="set_loc"
    style="@style/btnStyleBeige"
    android:layout_marginTop="46dp"
    android:layout_below="@+id/taskname"
    android:layout_alignEnd="@+id/relative3" />



<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Always alert me"
    android:id="@+id/textView7"
    android:layout_centerVertical="true"
    android:layout_alignParentStart="true"
    android:layout_marginLeft="20dp"/>

<Switch
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/btnStyleBeige"
    android:id="@+id/switch1"
    android:layout_marginRight="10dp"
    android:layout_centerVertical="true"
    android:layout_alignStart="@+id/button5" />

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/relative2"
    android:layout_marginTop="40dp"
    android:layout_below="@+id/switch1"
    android:layout_alignParentStart="true"
    android:layout_alignEnd="@+id/taskname">

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/pickDate"
        android:src="@drawable/c2"
        style="@style/btnStyleBeige"
        android:layout_marginStart="53dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true" />

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/pickTime"
        style="@style/btnStyleBeige"
        android:src="@drawable/c1"
        android:layout_marginEnd="55dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true" />

</RelativeLayout>

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/relative3"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="20dp">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button2"
        android:text="Add Task"
        android:onClick="add_task"
        android:textColor="@android:color/white"
        style="@style/btnStyleBeige"
        android:background="@android:color/holo_blue_light"
         />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button3"
        android:text="Cancel"
        android:onClick="cancel"
        android:textColor="@android:color/white"
        style="@style/btnStyleBeige"
        android:background="@android:color/holo_blue_light"
        android:layout_alignParentTop="true"
        android:layout_toEndOf="@+id/button2"
        android:layout_marginStart="37dp" />
    </RelativeLayout>

【问题讨论】:

  • 您希望 Edittext 动态改变大小而不影响屏幕上其他元素的布局?这是你的问题吗?
  • @JohnWhite Yess.. 这可能吗?

标签: android layout android-edittext


【解决方案1】:

您所要求的都是可能的。为此,您需要记住您使用的是什么 - RelativeLayout。 RelativeLayout 相对于屏幕上的其他元素布置每个项目。因此,如果您的元素的布局依赖于 EditText,那么当编辑文本的尺寸发生变化时,它们的位置也会发生变化。

话虽如此,您需要检查您的布局并删除对编辑文本的所有布局引用,并牢记这一点来重建您的布局。

【讨论】:

    【解决方案2】:

    如果要在按钮下方切换,请在 Switch 的 xml 中添加以下代码..

    android:layout_below="@+id/button5"
    

    作为替代方案,您可以查看设计,并且在使用 relativelayout 时,只需在 XML 视图中硬编码两行字符串,然后根据需要拖放资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-20
      • 2021-09-05
      相关资源
      最近更新 更多