gpt4 book ai didi

android - 将 TextInputLayout float 提示位置更改为中间?

转载 作者:搜寻专家 更新时间:2023-11-01 08:25:52 24 4
gpt4 key购买 nike

如何将 TextInputLayout float 提示位置更改为中间?

我已经 read这个答案和其他关于同一主题的答案,但他们已经超过一年了。

我问这个问题是想看看2017年有没有什么变化。

最佳答案

您想要的行为存在于 CollapsingTextHelper 类中。不幸的是,此类是包私有(private)的并且是 final,因此没有官方支持的方式供您调用所需的方法。以下是您希望能够编写的内容:

private void setCollapsedHintMiddle(TextInputLayout layout) {
CollapsingTextHelper helper = layout.getCollapsingTextHelper();
helper.setCollapsedTextGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
}

既然你不能那样做,你可以使用反射来绕过它:

private void setCollapsedHintMiddle(TextInputLayout layout) {
try {
Field helperField = TextInputLayout.class.getDeclaredField("mCollapsingTextHelper");
helperField.setAccessible(true);
Object helper = helperField.get(layout);

Method setterMethod = helper.getClass().getDeclaredMethod("setCollapsedTextGravity", int.class);
setterMethod.setAccessible(true);
setterMethod.invoke(helper, Gravity.TOP | Gravity.CENTER_HORIZONTAL);
}
catch (NoSuchFieldException e) {
// TODO
}
catch (IllegalAccessException e) {
// TODO
}
catch (NoSuchMethodException e) {
// TODO
}
catch (InvocationTargetException e) {
// TODO
}
}

请注意,这依赖于 TextInputLayoutCollapsingTextHelper 的内部实现细节,并且随时可能中断。

编辑

正如我在对原始问题的评论中提到的那样,有一种官方支持的方法可以做一些你不想要的事情。如果您像这样声明您的 TextInputLayout:

<android.support.design.widget.TextInputLayout
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<android.support.design.widget.TextInputEditText
android:id="@+id/emailChild"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:hint="Email"/>

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

然后在 Java 中更新 TextInputEditText 的引力:

    EditText emailChild = (EditText) findViewById(R.id.emailChild);
emailChild.setGravity(Gravity.START);

结果是提示水平居中显示(当 View 有焦点/文本和没有焦点/文本时),而用户输入的文本显示在左侧。

关于android - 将 TextInputLayout float 提示位置更改为中间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45200933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com