[英]Android EditText field like button
我正在嘗試處理一件小事情。 在我的應用程序中,我有一個帶有兩個EditText
字段的活動。
我希望其中一個是標准字段(etNormal),而另一個(etButton)的行為更像是按鈕,因此當您觸摸它時,不會顯示鍵盤,而是打開了滑動抽屜。 如果滑動抽屜被打開,您將按普通的edittext滑動抽屜將隱藏。
我曾嘗試將條件為如果單擊/觸摸了etButton打開滑動抽屜,則將OnClickListener
和OnTouchListener
(不在同一嘗試中)添加到這兩個條件中(如果沒有,則關閉)。
結果很奇怪。 在進行OnTouchListener測試時,它更像是切換,因此當我按下一個抽屜時打開另一個抽屜。 談到OnClickListener時,我需要按兩次edtitext才能完成操作。
為了在etButton中隱藏鍵盤,我正在使用setInputType(InputType.TYPE_NULL);
。 我也嘗試過setEnabled(false);
但是后來我什至無法點擊/觸摸它。 當前使用的方法的一個缺陷是,當我將單擊從etNormal更改為etButton時,鍵盤仍然顯示,並且沒有隱藏。
那么,誰能告訴我我可以做些什么來實現自己的目標?
編輯:
我已經刪除了您當前的建議,並修改了一些代碼,但仍然無法正常工作。
這是我分配OnTouchListener的一部分:
OnTouchListener touchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent ev) {
if(v==etButton && ev.getAction()==MotionEvent.ACTION_DOWN) {
slidingDrawer.animateOpen();
}else {
slidingDrawer.animateClose();
}
return false;
}
};
etNormal1.setOnTouchListener(touchListener);
etNormal2.setOnTouchListener(touchListener);
etButton.setOnTouchListener(touchListener);
同樣在XML布局文件的etButton聲明中,我有:
android:focusable="false"
但是現在,在etButton上沒有碰到任何事情(如果打開了滑動抽屜,則只有其隱藏),並且在觸摸etNormal1或2時,滑動抽屜會顯示或隱藏,這取決於首先發生的事情(換句話說就是toggel)。
任何想法,這是怎么了?
得到了一個editText與
android:focusable="false"
android:clickable="true"
然后使用OnClickListener覆蓋操作
在您的布局中,將以下屬性添加到EditText
android:focusable="false"
android:focusableInTouchMode="false"
接下來,編寫方法來處理對EditText的單擊,並添加您的應用程序邏輯。
除了以上答案外,我還使用cursorVisibility隱藏了光標!
android:focusable="false"
android:clickable="true"
android:cursorVisible="false"
android:focusableInTouchMode="false"
cursorVisible在單擊EditText時顯示/隱藏光標
focusable在用戶觸摸視圖時獲得焦點,例如EditText
focusableInTouchMode保持選擇視圖。 (選擇和點擊是不同的)
如需詳細了解,請參閱此處
如果您使用的是onTouch事件,則單擊編輯文本時,將獲得兩個事件,其動作分別為MotionEvent.Action_down和action Up。 因此基本上,它會產生兩次單擊編輯文本的效果。 您能否提供代碼,以便我們深入了解。
將您的代碼重新寫入為:
OnTouchListener touchListener = new OnTouchListener() {
boolean isOpen=false;
@Override
public boolean onTouch(View v, MotionEvent ev) {
if(v==etButton && ev.getAction()==MotionEvent.ACTION_UP) {
if(!isOpen){
slidingDrawer.animateOpen();
}else{
slidingDrawer.animateClose();
}
isOpen=!isOpen;
}
return false;
}
};
如果etButton需要是一個EditText(為什么不是按鈕,如果它的行為像一個按鈕?),則可以設置onFocusChangeListener。 一旦獲得焦點,就可以顯示抽屜...?
不確定是否不顯示鍵盤...
EditTexts非常棘手。 使用OnClickListener時必須按兩次的原因是,第一次在EditText上獲得焦點,並且消耗了touch事件,在這種情況下會觸發OnFocusListener。 當您第二次觸摸時,EditText已經具有焦點,因此現在觸發了單擊事件。
我建議您嘗試在沒有EditTexts的情況下執行此操作。 無論如何,這將產生一個更清潔,更簡單的解決方案。 您為什么要使用EditTexts而不是Buttons?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.