EditText android:hint not disappearing onFocus

2019-06-16 04:20发布

问题:

I am on Android 4+ and I am trying to add hints to my edit text widgets. I tried adding the hint to the layout as follows...

 <EditText
        android:id="@+id/bar_name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:hint="@string/bar_name_hint"
        />

But when I focus on the Text box it writes over the hint instead of the hint disappearing.

I found documentation on adding a onFocus listener to the EditText, but I would like to avoid doing this programatically. The post below also mentioned using selectors but I can't find documentation on how to do that.

Android EditText Hint

So what is the best way to handle this?

I wrote this as recomended here by @A--C and @Flexo because they say "comments that say nothing beyond "me too" are just noise." and it's better to ask the same question again.

Comments like that are very useful as a way to contact the 1st person with the problem... maybe he has already fixed it and can post an answer that will be useful for everybody but didn't posted yet because he thought nobody would care.

I'm not going to post answers to questions only to get points so I can comment... I have more stuff to do... It should be available to everybody anyway.

I wouldn't be posting this if I hadn't tried EVERYTHING to fix my problem.

回答1:

For some reason, I had the activity and fragment layout set twice. On Activity onCreate:

    protected void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.edit_consumption);

and on the fragment onCreateView:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.edit_consumption, null);

So I had 2 layers of layout. I only had to remove that layout from the Activity onCreate to fix the problem.



回答2:

use following code in oncreate()

myEditText.setOnFocusListener(new OnFocusListener(){
  public void onFocus(){
    myEditText.setHint("");
  }
});