Android EditText.setHint 无法在片段中工作

Android EditText.setHint not working in fragment

我有一个我实现的滑动菜单的片段,我在其中使用的 EditText 遇到了问题。不幸的是,每当我在滑动菜单中的 EditText 中键入内容时,提示仍会显示。因此,我试图找到一个解决方法,所以如果 EditText 中没有任何内容,我基本上将提示设置为无,但这根本不起作用。其他基于文本启用或禁用按钮的代码确实有效。这对我来说是个谜。

它在做什么:

http://i.stack.imgur.com/9DEPN.png

我的解决方法:

public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        dbHandler = new DatabaseHandler(getActivity());

        final Button addBtn = (Button) getView().findViewById(R.id.btnAddPlaylist);
        final EditText txtPlaylistName = (EditText) getView().findViewById(R.id.txtPlaylist);

        txtPlaylistName.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                boolean hasContent = !String.valueOf(s).trim().isEmpty();

                addBtn.setEnabled(hasContent);
                txtPlaylistName.setHint((hasContent) ? "Create new Playlist..." : "");
            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
    }

如果您的 EditText 为空,则必须使用字符串调用 setHint,如果它包含文本则不需要。在您的代码段中,您有:

txtPlaylistName.setHint((hasContent) ? "Create new Playlist..." : "");

这设置了一个提示,即使你还有一些内容,

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
       boolean hasContent = (count != 0);
       addBtn.setEnabled(hasContent);
       txtPlaylistName.setHint((hasContent) ? null : "Create new Playlist...");
 }
EditText etUsername;
etUsername = (EditText) findViewById(R.id.etUsername);
etUsername.setHint("Your Hint");

If you are using Editext within TextInputLayout then you need to change property of TextInputLayout not Edittext:

TextInputLayout layoutUser;
layoutUser = (TextInputLayout) findViewById(R.id.inputLayoutUname);
layoutUser.setHint(getResources().getString(R.string.hintFaculty));

您可以向布局容器添加提示,它将显示为expected.It为动态创建的EditText 添加提示的方式。 希望有人能从中受益。

TextInputLayout textInputLayout = holder.itemViewfindViewById(R.id.value_text);
textInputLayout.setHint(your_value.getTitle());