2017-07-17 78 views
1

我有一個AppCompatEditText像TextInputLayout此如何使用TextInputLayout作爲按鈕

<RelativeLayout 
    android:id="@+id/rv_from_date_holder" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginEnd="20dp" 
    android:layout_marginStart="20dp"> 

    <android.support.design.widget.TextInputLayout 
     android:id="@+id/edt_from_date_holder" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="20dp" 
     android:layout_marginTop="20dp" 
     android:layout_toStartOf="@+id/iv_from_date_picker" 
     android:fontFamily="sans-serif-light" 
     android:textColor="@color/colorPrimary" 
     android:textColorHint="@color/colorPrimary" 
     android:theme="@style/TextLabelDark" 
     app:passwordToggleEnabled="true" 
     app:passwordToggleTint="@color/colorPrimary"> 

     <android.support.v7.widget.AppCompatEditText 
      android:id="@+id/edt_from_date" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="From Date" 
      android:maxLines="1" 
      android:textColor="@color/colorPrimary" 
      android:textColorHint="@color/colorPrimary" 
      android:textCursorDrawable="@null" 
      app:backgroundTint="@color/colorPrimary" /> 

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

    <ImageView 
     android:id="@+id/iv_from_date_picker" 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:layout_alignParentEnd="true" 
     android:layout_centerVertical="true" 
     android:padding="8dp" 
     android:src="@drawable/date_range" /> 

</RelativeLayout> 

ScreehShot

在AppCompatEditText我需要顯示的日期選擇器的點擊。但我不想讓鍵盤彈出。

我試過如下:

1. edt_from_date.setEnabled(false); 
2. edt_from_date.setKeyListener(null); 
3. rv_from_date_holder.setOnclickListener()//Also didn't worked 

如果我禁用我不能夠彈出的日期選擇器。 如果我setKeyListener爲null,那麼我需要點擊兩次以獲取日期選擇器。

回答

1

您應該添加

機器人:可調焦= 「假」

<android.support.v7.widget.AppCompatEditText 
     android:id="@+id/edt_from_date" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="From Date" 
     android:maxLines="1" 
     android:focusable="false" 
     android:textColor="@color/colorPrimary" 
     android:textColorHint="@color/colorPrimary" 
     android:textCursorDrawable="@null" 
     app:backgroundTint="@color/colorPrimary" /> 

而且內部活動/片段設置

onClickListener

+0

然後哪個視圖我需要聽edt_from_date? – Sidd

+0

謝謝!這就是我要的。 – Sidd

+0

不客氣! –

0

嘗試這將肯定幫助您

 // disable keyboard on editext on touch listener 
    editText.setOnTouchListener(otl); 

private OnTouchListener otl = new OnTouchListener() { 
    public boolean onTouch (View v, MotionEvent event) { 
      return true; // the listener has consumed the event 
    } 
}; 

//開放日期選取器在這裏

editText.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // open your date picker here 
     } 
    }); 
+0

這不會阻止鍵盤彈出 –

+0

@AjilO。請chek更新ans –

0

而不是你設置啓用編輯文本爲false這樣edt_from_date.setEnabled(false);您可以禁用編輯這樣的編輯文本edt_from_date.setEditable(false);然後你仍然可以setOnClickListener()而不顯示鍵盤。

0

把下面的代碼在你的XML

<android.support.design.widget.TextInputLayout 

       android:layout_width="match_parent" 
       android:layout_marginTop="5dp" 
       android:layout_height="wrap_content"> 
       <android.support.v7.widget.AppCompatEditText 
        android:layout_width="match_parent" 
        android:maxLines="1" 
        android:imeOptions="actionDone" 
        android:inputType="text" 
        android:focusable="false" 
        android:fontFamily="sans-serif-condensed" 
        android:hint="Expiry Date" 
        android:layout_height="wrap_content" /> 
      </android.support.design.widget.TextInputLayout> 

機器人:可調焦=「假」是你需要的,如果你不想鍵盤打開添加屬性。

現在上顯示點擊日期選擇器的使用它下面的代碼:

your_edit_text.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       new DatePickerDialog(YourActivity.this, date, myCalendar 
         .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), 
         myCalendar.get(Calendar.DAY_OF_MONTH)).show(); 
      } 
     }); 

最後這個代碼來獲得日期

myCalendar = Calendar.getInstance(); 

     date = new DatePickerDialog.OnDateSetListener() { 

      @Override 
      public void onDateSet(DatePicker view, int year, int monthOfYear, 
            int dayOfMonth) { 
       // TODO Auto-generated method stub 
       myCalendar.set(Calendar.YEAR, year); 
       myCalendar.set(Calendar.MONTH, monthOfYear); 
       myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
       updateLabel(); 
      } 

     }; 

希望,這將幫助你。 :-)