我已經創建了一個包含兩個按鈕Next和Previous的佈局。在按鈕之間,我正在生成一些動態視圖。所以當我第一次啓動應用程序時,我想禁用「Previous」按鈕,因爲不會有任何以前的視圖。我還想在沒有更多視圖可顯示時禁用「下一步」按鈕。無論如何禁用按鈕?如何禁用Android按鈕?
回答
你試過這個嗎?
myButton.setEnabled(false);
更新:感謝Gwen。幾乎忘了可以在您的XML佈局中設置android:clickable
以確定按鈕是否可點擊。
您無法在XML中啓用它或禁用它(因爲您的佈局是在運行時設置的),但您可以設置它是否可在啓動android:clickable
的活動時單擊。
5年的Android經驗,我現在就瞭解這個! :/ – Sagar 2017-09-10 17:50:13
你只寫一行代碼在活動
Button btn = (Button) findViewById(R.id.button1);
btn.setEnabled(false);
如果要啓用相同的按鈕只寫
Button btn = (Button) findViewById(R.id.button1);
btn.setEnabled(true);
在我的情況下,
myButton.setEnabled(false);
myButton.setEnabled(true);
工作正常,它是啓用和禁用按鈕,因爲它應該。但是,一旦按鈕狀態變爲禁用狀態,它將永遠不會再次回到啓用狀態,儘管它是可點擊的。我嘗試無效並刷新可繪製狀態,但沒有運氣。
myButton.invalidate();
myButton.refreshDrawableState();
如果您或任何人有類似的問題,我的作品是設置可再次繪製背景。適用於任何API級別。
myButton.setEnabled(true);
myButton.setBackgroundDrawable(activity.getResources().getDrawable(R.drawable.myButtonDrawable));
在Java中,一旦你有按鈕的參考:
Button button = (Button) findviewById(R.id.button);
要啓用/禁用按鈕,您可以使用:
button.setEnabled(false);
button.setEnabled(true);
或者:
button.setClickable(false);
button.setClickable(true);
由於您想禁用t按鈕他開始,可以使用button.setEnabled(false); onCreate方法中的。 否則,XML,你可以直接使用:
android:clickable = "false"
所以:
<Button
android:id="@+id/button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/button_text"
android:clickable = "false" />
首先在XML使按鈕android:clickable="false"
<Button
android:id="@+id/btn_send"
android:clickable="false"/>
然後在你的代碼,裏面oncreate()
方法設置按鈕屬性爲
btn.setClickable(true);
那麼按鈕內點擊更改代碼爲
btn.setClickable(false);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
btnSend = (Button) findViewById(R.id.btn_send);
btnSend.setClickable(true);
btnSend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
btnSend.setClickable(false);
}
});
}
是它可以在XML 被禁用只是用 <Button android:enabled="false" />
錯誤的方式 IN監聽器,參數,而不是用變量!
btnSend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
btnSend.setClickable(false);
}
});
RIGHT WAY:
btnSend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
/** check given view by assertion or cast as u wish */
if(v instance of Button) {
/** cast */
Button button = (Button) v;
/** we can perform some check up */
if(button.getId() == EXPECTED_ID) {
/** disable view */
button.setEnabled(false)
button.setClickable(false);
}
} else {
/** you can for example find desired view by root view */
Button bt = (Button) v.getRootView().findViewById(R.id.btId);
/*check for button */
if(bt!=null) {
/** disable button view */
...
} else {
/** according to @jeroen-bollen remark
* we made assumption that we expected a view
* of type button here in other any case
*/
throw new IllegalArgumentException("Wrong argument: " +
"View passed to method is not a Button type!");
}
}
}
});
編輯: 在答覆@ JEROEN-博倫
View.OnClickListener
爲回調接口定義要時調用點擊一個視圖。
與方法定義
void onClick(View v);
當視圖點擊View類對象進行回調方法的onClick()發送的參數本身,因此,如果它確實是不應該出現空視圖參數一個斷言錯誤它可能發生,例如,當查看對象類同時被銷燬(例如由GC收集)或方法由於被破解而被篡改時
很少約的instanceof &空
JLS/15.20.2。類型比較操作的instanceof
在運行時,如果RelationalExpression的值不爲空 和參考可強制轉換爲引用類型 不提高一個ClassCastException instanceof運算符的結果爲真 。
否則結果是錯誤的。從筆者
如果U問爲什麼
三個字?
主要是爲了避免NullPointerException異常
多一點的代碼將保存在以後的bug跟蹤時間在你的代碼&減少abnomalies的發生。
考慮下面的例子:
View.OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
btnSend.setClickable(false);
}
});
btnSend.setOnClickListener(listener)
btnCancel.setOnClickListener(listener)
在科特林,如果你指的按鈕來查看與ID,然後,啓用/禁用按鈕像
layout.xml
<Button
android:id="@+id/btn_start"
android:layout_width="100dp"
android:layout_height="50dp"
android:text="@string/start"
android:layout_alignParentBottom="true"/>
activity.kt
btn_start.isEnabled = true //to enable button
btn_start.isEnabled = false //to disable button
- 1. Android禁用按鈕
- 2. 如何暫時禁用按鈕Android
- 3. 如何禁用Android的後退按鈕#
- 4. 如何禁用android中的按鈕?
- 5. 如何禁用搜索按鈕 - Android
- 6. 如何禁用Android 4.0主頁按鈕?
- 7. Android禁用所有按鈕
- 8. 禁用android鍵盤按鈕
- 9. Android禁用後退按鈕
- 10. Android禁用網格按鈕
- 11. Android中的禁用按鈕
- 12. 禁用禁用按鈕,如果使用「data-role =」按鈕「禁用」
- 13. 如何使按鈕禁用
- 14. 如何禁用ladda按鈕?
- 15. 如何禁用按鈕asp.net
- 16. 如何禁用jqueryui按鈕
- 17. 如何禁用按鈕
- 18. Swift:如何禁用按鈕
- 19. 如何禁用按鈕
- 20. QT - 如何禁用按鈕
- 21. Android:刪除按鈕按高亮禁用
- 22. 禁用按下兩次的android按鈕
- 23. Android的 - 如何禁用搜索按鈕長按(歌Nexus One)
- 24. 如何禁用在android中按下webview的後退按鈕?
- 25. 如何在Android中最初禁用或按下按鈕?
- 26. 如何禁用在Android片段類中按下後退按鈕
- 27. Android - 如何禁用搜索按鈕,如何實現onSearchRequested()?
- 28. 禁用按鈕
- 29. 禁用按鈕
- 30. 禁用按鈕
沒有等效的XML :-( – Blundell 2011-06-09 19:31:25
相當於android:在xml中啓用。 – Namratha 2013-02-26 09:35:53
你在哪裏找到這個文檔?你能在這裏鏈接嗎? – Varun 2013-02-27 04:13:46