如何从材质设计TextInputLayout正确获取文本?

时间:2019-09-05 02:58:32

标签: android material-design android-textinputlayout android-textinputedittext

我想使用自定义的结束图标从材质设计的TextInputLayout获取文本。

我试图这样做:

TextInputLayout textInputCustomEndIcon = findViewById(R.id.editText);
final TextInputEditText editText = new TextInputEditText(textInputCustomEndIcon.getContext());

textInputCustomEndIcon
                .setEndIconOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                if (editText.getText() != null) {
                                    String text = editText.getText().toString();

                                    Log.i("MainActivity", "setEndIconOnClickListener:"+ text);
                                }
                            }
                            });

但是我得到一个空文本,不是null而是空的!

2 个答案:

答案 0 :(得分:1)

使用类似的东西:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/custom_end_icon"
    ...>

    <com.google.android.material.textfield.TextInputEditText
       ../>

</com.google.android.material.textfield.TextInputLayout>

只需使用:

TextInputLayout textInputLayout = findViewById(R.id.custom_end_icon);
String text = textInputLayout.getEditText().getText();

您的问题在这里:

final TextInputEditText editText = new TextInputEditText(textInputCustomEndIcon.getContext());

您仅在创建TextInputEditText的新实例,而不是TextInputEditText内的TextInputLayout

答案 1 :(得分:0)

我和你有同样的问题。我只是这样解决的。在String变量中,我需要使用 .trim()

验证是否已正确插入数据。
  String vname=Name.getEditText().getText().toString().trim();