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());
我有一个我实现的滑动菜单的片段,我在其中使用的 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());