Android: Display TextView in the right-side of EditText which is in the TextInputLayout

人盡茶涼 提交于 2019-12-21 08:02:06

问题


I am trying to create a layout like in the picture below

In the above picture the password field is in the TextInputLayout and it also have a TextView in the right side , which points to the Forget Password Activity.

I achive EditText with Textview without TextInpt layout like below using relative layout

XML layout:

        <EditText
            android:id="@+id/email_address"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:drawableLeft="@drawable/ic_email"
            android:drawableStart="@drawable/ic_email"
            android:drawablePadding="10dp"
            android:hint="@string/email_address"
            android:textSize="14sp"
            android:maxLines="1"
            android:inputType="textEmailAddress" />



        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

        <EditText
            android:id="@+id/etxt_password_login"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:drawableLeft="@drawable/ic_password"
            android:drawableStart="@drawable/ic_password"
            android:drawablePadding="10dp"
            android:textSize="14sp"
            android:hint="Password"
            android:layout_alignParentLeft="true"
            android:inputType="textPassword"
            android:maxLines="1"/>

            <TextView
                android:id="@+id/txt_forget_password"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:text="forget ?"
                android:textSize="12sp"
                android:layout_marginRight="10dp"
                android:textColor="#808080"
                />

        </RelativeLayout>

But If I add TextInputLayout in the EditText I can't achieve it.

How I resolve this issue?


回答1:


Try Like this - Surround with Relative or Linear Layout to get the output like that

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Password"/>

        </android.support.design.widget.TextInputLayout>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:text="Forgot Password ?"/>
    </RelativeLayout>

Note : Set some padding right for edit text for alignment


If you type full edittext , the textview overlay for your character .




回答2:


Yes it is possible

Create a drawable

border.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <stroke
        android:width="0.2dp"
        android:color="@color/color_secondary" />
    <solid android:color="#fff" />

    <padding android:bottom="8dp" />
    <padding android:top="8dp" />
    <padding android:left="8dp" />
    <padding android:right="8dp" />


</shape>

****In your code..****

 <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@color/border"  **apply drawable here**
        android:orientation="horizontal">

    <EditText
        android:id="@+id/etxt_password_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:hint="Password"
        android:inputType="textPassword"
        android:maxLines="1"/>

        <TextView
            android:id="@+id/txt_forget_password"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_centerVertical="true"
            android:text="forget ?"
            android:textSize="12sp"
            android:textColor="#808080" />

    </RelativeLayout>

finally adjust your layout as you need




回答3:


I am trying like below and it is working for me. may be it may help you. Somehow I am unable to use TextView inside TextInputLayout, layout getting crash. But i am able to use ImageViews inside it.

<android.support.design.widget.TextInputLayout
    android:id="@+id/layoutTextInput"
    style="@style/CommonTextInputLayout"
    android:textColorHint="@color/aluminium">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">
        <EditText
            android:id="@+id/editTextValue"
            style="@style/CommonEditText"
            android:imeOptions="actionNext"
            android:layout_marginBottom="8dp"
            android:inputType="text"/>
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="-40dp"
            android:src="@drawable/ic_tick_green"/>
    </LinearLayout>
</android.support.design.widget.TextInputLayout>


来源:https://stackoverflow.com/questions/41981312/android-display-textview-in-the-right-side-of-edittext-which-is-in-the-textinpu

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!