如何在Android Layout中将EditBox中的文本划分为TextView和EditBox

Posted

技术标签:

【中文标题】如何在Android Layout中将EditBox中的文本划分为TextView和EditBox【英文标题】:How to divide text in EditBox as TextView and EditBox in Android Layout 【发布时间】:2020-04-09 22:28:08 【问题描述】:

我希望我的 EditText 看起来像这样 - 我能够实现 EditText 但我无法将 TextView 放在一边。

这是我的代码 -

<LinearLayout
        android:id="@+id/input_group"
        android:layout_
        android:layout_
        android:orientation="vertical"
        android:layout_marginLeft="25dp"
        android:layout_marginRight="25dp"
        android:layout_marginBottom="50dp"
        android:layout_alignParentBottom="true"
        android:gravity="center">

    <EditText
            android:layout_
            android:layout_
            android:padding="5dp"
            android:textColor="@android:color/white"
            android:hint="Username"
            android:background="@drawable/rounded_edit_text" />

    <EditText
            android:layout_
            android:layout_
            android:padding="5dp"
            android:textColor="@android:color/white"
            android:hint="Password"
            android:background="@drawable/rounded_edit_text" />
</LinearLayout>

【问题讨论】:

你到底想完成什么? 【参考方案1】:

试试这个

<LinearLayout
        android:layout_
        android:layout_
        android:background="@drawable/linear_bg"
        android:orientation="horizontal">

    <TextView
            android:layout_
            android:layout_
            android:layout_weight=".4"
            android:gravity="center"
            android:padding="5dp"
            android:text="UserName"
            android:textColor="@android:color/white" />

    <EditText
            android:layout_
            android:layout_
            android:layout_weight=".6"
            android:background="@android:color/transparent"
            android:gravity="center"
            android:hint="******"
            android:padding="5dp"
            android:textColor="@android:color/white"
            android:textColorHint="@android:color/white" />

</LinearLayout>

drawable/linear_bg

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
    <solid android:color="#3F51B5" />
    <corners android:radius="20dp" />
</shape>

输出

OUTPUT in device

【讨论】:

再次感谢,但在接受此之前,您能告诉我 - 通过为每个字段添加这么多可绘制对象,这会影响性能吗? 而不是保持 TextView 和 EditBox 50-50,我希望它们 40-60,在 xml 中使用哪个属性来做到这一点? @nkirit 你可以根据你的要求使用android:layout_weight=".6"【参考方案2】:

您应该在水平 LinearLayout 中有 TextView 和 EditText。背景应该应用于 LinearLayout 而不是 EditText

  <LinearLayout
        android:id="@+id/input_group"
        android:layout_
        android:layout_
        android:orientation="horizontal"
        android:layout_margin="@dimen/form_margin"
        android:padding="8dp"
        android:background="@drawable/background"
        android:layout_alignParentBottom="true"
        android:gravity="center">

        <TextView
            android:layout_
            android:layout_
            android:padding="5dp"
            android:textSize="20sp"
            android:textColor="@android:color/white"
            android:text="username"
             />

        <EditText
            android:layout_
            android:layout_
            android:padding="5dp"
            android:layout_marginLeft="16dp"
            android:textColor="@android:color/white"
            android:textSize="20sp"
            android:text="Olivia Gu" />
    </LinearLayout>

背景-

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/colorPrimary" />
    <stroke android:
        android:color="@color/colorAccent" />
    <corners android:radius="8dp" />
</shape>

【讨论】:

以上是关于如何在Android Layout中将EditBox中的文本划分为TextView和EditBox的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中将EditText提示创建为带有图像的文本

如何在 Android 上的 TextView 中将两行文本居中?

如何在 Android 中将文本复制到剪贴板?

如何在 FrameLayout 中将元素右对齐?

Android layout_width & layout_height,它是如何工作的?

Android XML:在 XML 布局文件中将资源 ID 设置为 View 的标签