2015-11-05 66 views
1

这里是双重提示问题 - TextInputLayout and EditText double hint issue需要做双一丝的EditText与TextInputLayout

我需要做的是相同的。我需要两个提示。一个是EditText的标题,第二个是没有输入的情况下可能的值。

但不幸的是,只有一个标签:

android:hint 

我可以用它做什么?

UPD1:

答案是对的EditText编程设置提示和暗示XML为TextInputLayout。

 <android.support.design.widget.TextInputLayout 
      android:layout_width="match_parent" 
      android:hint="@string/prompt_quantity" 
      android:layout_height="wrap_content"> 

      <EditText 
       android:id="@+id/quantity" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:inputType="number" 
       android:maxLines="1" 
       android:singleLine="true" /> 

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

而且

quantityEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      quantityEditText.setHint(hasFocus ? "0" : ""); 
     } 
    }); 
+0

使用此LIB。 https://github.com/activesince93/CustomViews –

回答

0

只需检查您输入的改变取决于提示:

EditText editText = (EditText)findViewById(R.id.editText); 
editText.addTextChangedListener(new TextWatcher() 
{ 
    @Override 
    public void afterTextChanged(Editable s) 
    { 
     if(editText.getText().toString().equals("")) 
      editText.setHint(""); 
     else 
      editText.setHint("Your normal hint"); 
    } 
}); 
0

尝试这种方式

XML布局

<?xml version="1.0" encoding="utf-8"?> 
<merge xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_gravity="center_vertical" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"> 
    <EditText 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/non_active_edit_text" 
      android:focusable="false" 
      android:gravity="right|center_vertical" 
      android:hint="Right" 
      android:paddingTop="4dp" 
      android:background="@null"/> 


    <EditText 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/active_edit_text" 
      android:hint="Left" 
      android:layout_gravity="center_horizontal"/> 
</merge> 

JAVA类

public class TwoHints extends RelativeLayout{ 

    EditText activeField; 
    EditText nonActiveEditText; 

    final CharSequence hint; 
    public TwoHints(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     LayoutInflater.from(context).inflate(R.layout.two_hints_edit_text, this); 
     activeField = (EditText)findViewById(R.id.active_edit_text); 
     nonActiveEditText = (EditText)findViewById(R.id.non_active_edit_text); 
     hint = nonActiveEditText.getHint(); 
     activeField.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) { 
       nonActiveEditText.setHint(s.length() !=0 ? "" : hint); 
      } 

      @Override 
      public void afterTextChanged(Editable s) { 

      } 
     }); 
    } 
} 

editetext对XML

<you.package.TwoHints 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textView" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true"/>