TextInputLayout提示文本左侧填充

5
我在TextInputLayout中加入了一个drawableLeft, 但是提示的位置是根据文本位置(从左边即紧挨着drawableLeft)决定的,如下图所示:enter image description here 我希望提示的位置如下图所示:enter image description here 谢谢。

首先,使用哪种编程语言?其次,你尝试过什么?给我们展示一些代码... - Fusseldieb
我认为语言并不是问题。我尝试过使用hintTextAppearance,但它只能改变文本的大小/颜色。我也尝试给TextInputLayout本身设置左填充=0dp,但这并没有起作用。 - BST Kaal
1
我在这篇帖子中有一个解决方案。 - Mike M.
1
谢谢@MikeM。我已经尝试了一个解决方法,它对我来说是有效的,但绝对不是一个好的解决方法,所以我一定会尝试你的答案。 - BST Kaal
1
@MikeM,你的解决方案非常好。 - BST Kaal
2个回答

1

目前没有办法做到这一点。如果您查看TextInputLayout source,您会发现提示会考虑到父视图的复合填充。CollapsingTextHelper不是布局的公共API的一部分,因此您无法轻松更改其行为。

您最好的选择是改变对此填充的要求,或使用某种自定义布局来在努力和效果之间达成妥协。


非常感谢,我只是想知道是否有官方的(由Android开发人员记录的)方法来做到这一点。 - BST Kaal
在源代码中查找,不幸的是我没有找到任何暴露提示助手填充逻辑的内容。我建议删除邮件信封图标或将其移动到TextInputLayout左侧的单独的ImageView中,以便您的文本正确对齐。 - npace
我已经尝试使用单独的 ImageView,但问题是,无论我是将 EditText 定位在 ImageView 之后还是给它一些额外的左填充以出现在 ImageView 之后,问题都是相同的,提示将根据 EditText 文本显示。 - BST Kaal
如果你愿意使用一种不太正规的方法,你可以使用ImageSpan将图标渲染为EditText的第一个“单词” - 但是你必须确保用户无法删除它。然而,这会导致很多调试和头痛问题... - npace

0

尝试下面的代码

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_marginTop="20dp"
        android:layout_height="54dp"
        android:gravity="bottom"
        android:paddingTop="4dp"
        android:clipToPadding="false"  // above 3 lines are important
        android:id="@+id/emailWrapper"
        app:hintTextAppearance="@style/floatingLabel">

        <EditText
            android:layout_width="match_parent"
            android:layout_height="54dp"
            android:paddingLeft="17dp"
            android:paddingRight="17dp"
            android:id="@+id/txtEmail"
            android:singleLine="true"
            android:inputType="textEmailAddress"
            android:hint="@string/emailPlaceholder"
            android:text="a@a.com"
            android:background="@drawable/btn_empty_stroke" />

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

还可以查看:Android:如何更改EditText字段中的文本大小?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接