【问题标题】:android: How to set margin/padding between EditText custom background and InputTextLayout Label?android:如何在 EditText 自定义背景和 InputTextLayout 标签之间设置边距/填充?
【发布时间】:2016-12-02 12:20:38
【问题描述】:

我想在按下状态下设置 EditText 和 InputTextLayout 标签之间的边距/填充。

这是我的图片 - desired design

主要 Xml 代码 - `

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="56dp"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:paddingLeft="24dp"
    android:paddingRight="24dp">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="24dp"
        android:src="@drawable/headphones_3" />

    <android.support.design.widget.TextInputLayout
        android:id="@+id/textLabel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginTop="8dp"
        android:visibility="gone"
        app:theme="@style/TextLabel">

        <EditText
            android:id="@+id/input_email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Email"
            android:inputType="textEmailAddress" />
    </android.support.design.widget.TextInputLayout>

    <android.support.design.widget.TextInputLayout
        android:id="@+id/password_label"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="gone"
        app:theme="@style/TextLabel">

        <EditText
            android:id="@+id/input_password"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:background="@drawable/edit_text_style"
            android:drawablePadding="@dimen/floating_hint_margin"
            android:hint="Password"
            android:inputType="textPassword"
            android:paddingLeft="@dimen/floating_hint_margin" />

    </android.support.design.widget.TextInputLayout>
</LinearLayout>

`

虽然现在我只将自定义主题应用于“密码”TextInputLayout。!

这里是edit_text_style

的代码
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- focused state -->
<item android:state_focused="true">
    <shape android:shape="rectangle">
        <solid android:color="#80FFFFFF" />
        <stroke android:width=".5dp" android:color="@color/colorPrimary" />
        <corners android:radius="6dp" />
    </shape>
</item>
<!-- normal state -->
<item>
    <shape>
        <solid android:color="@android:color/transparent" />
        <stroke android:width="2dp" android:color="@color/colorPrimary" />
        <corners android:radius="22dp" />
    </shape>
</item>

我得到的结果 - Resulted Image

如您所见,Label 上升到光标处,并且 Label 和 EditText 背景之间没有填充。

以及如何将标签设置为 EditText 背景开始的位置(因为它现在位于光标顶部)?

(对不起我的英语不好)

更新:让我解释一下 - 再看看那些图片。!我想在 TextInputLayout 标签之间设置填充(当你关注它时这里是密码)。你们说的是在自定义drawable(这里是edit_text_style)光标和Label之间创建填充,但我想在我添加的drawable和Label(处于聚焦状态时出现的密码文本)之间进行填充,并且还想将Label位置设置为它向上移动到光标开始。!

【问题讨论】:

  • 在编辑文本中使用填充
  • android:paddingTop="10dp" 用于顶部或 android:padding="10dp" 用于所有
  • 它不起作用@Vickyexpert。我想这是因为我添加了背景。因为它增加了光标和标签之间的高度(但不是背景和标签之间)
  • @Er.Arjunsaini 查看更新后的问题(现在稍微说清楚了:))

标签: android android-layout android-edittext android-textinputlayout android-custom-drawable


【解决方案1】:

您可以将自定义样式应用于您的 EditText(您需要填充 onPressedState 的样式):

<EditText
        android:id="@+id/input_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Email"
        android:inputType="textEmailAddress" />

还有风格:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
       <item android:state_focused="true"
             android:state_pressed="true"
             android:drawable="@drawable/next_white">
             <inset android:insetLeft=""YOUR_PADDING_IN_DP dp"/>

来源:android:drawableLeft margin and/or padding

对于边距,用 drawable 是不可能的,但你仍然可以定义一个动画来解决这个问题:

在 res/anim 中,创建一个 ma​​rgin_animation.xml

    <?xml version="1.0" encoding="utf-8"?>

    <set xmlns:android="http://schemas.android.com/apk/res/android"              android:interpolator="@android:anim/accelerate_interpolator">
               <translate android:fromYDelta="0" android:toYDelta="100%" />
    </set>

来源:In Android, is it possible to set the margin from the drawable?

【讨论】:

  • 这不是我想要的。!不过谢谢你。我想在可绘制背景和 TextInputLayout 标签之间进行填充,并且还想移动标签位置,因为它总是向上移动到光标。
  • 对不起,我误会了你。如果我理解你,你需要密码 EditText 和它的标签之间的边距吗?如果是这样,您应该尝试为与密码 EditText 对应的 TextInputLayout 应用 margin="8dp" 对于光标填充,您应该将 padding="your_padding" 添加到 EditText 我猜
  • 让我解释一下 - 再看看那些图像。!我想在 TextInputLayout 标签之间设置填充(当你关注它时这里是密码)。你们说的是在自定义drawable(这里是edit_text_style)光标和Label之间创建填充,但我想在我添加的drawable和Label(处于聚焦状态时出现的密码文本)之间进行填充。
  • 如果您希望自定义背景和标签有间距,您需要在其中一个 edit_text_style.xml 中的 b> 标签
【解决方案2】:

@Ansh....您已将可绘制对象设置为 TextInputLayout 并对 edittext 和 TextInputLayout 进行填充.....

以你的方式它不是很好......如果你想用 textinputlayout 做你想做的事情

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="56dp"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        android:paddingLeft="24dp"
        android:paddingRight="24dp">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="24dp"
            android:src="@mipmap/ic_launcher" />

        <android.support.design.widget.TextInputLayout
            android:id="@+id/textLabel"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginTop="8dp"
            android:padding="10dp"
            android:background="@drawable/edit_text_style"
            android:visibility="visible">

            <EditText
                android:id="@+id/input_email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@null"
                android:hint="Email"
                android:inputType="textEmailAddress"
                android:padding="10dp" />
        </android.support.design.widget.TextInputLayout>

        <android.support.design.widget.TextInputLayout
            android:id="@+id/password_label"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/edit_text_style"
            android:padding="10dp"

            android:visibility="visible">

            <EditText
                android:id="@+id/input_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@null"
                android:padding="10dp"
                android:hint="Password"
                android:inputType="textPassword"

             />

        </android.support.design.widget.TextInputLayout>
    </LinearLayout>

而且在你的drawable中只取一个矩形或圆角以获得更好的视图

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 2022-01-17
    • 1970-01-01
    • 2011-08-25
    • 2016-02-06
    • 2017-12-15
    相关资源
    最近更新 更多