![](/img/trans.png)
[英]Prevent losing focus on EditText when clicking on a button in Android
[英]How to toggle focus between buttons without losing focus on clicking button
我在做速度游戲,其中線程更改集中在4個不同的按鈕上。 我只希望更改線程集中在按鈕上。 我遇到的問題是,例如當線程選擇藍色按鈕聚焦時,如果我按紅色按鈕,則藍色按鈕會失去焦點。 我可以清楚地看到這一點,因為默認,按下和聚焦時我的按鈕具有不同的圖片。 所以無論如何,即使我按下其他按鈕,也可以強制將焦點集中在我選擇的按鈕上。 這是我的代碼:
線:
public void run() {
while (aika > 0 && isKaynnissa()) {
try {
Thread.sleep(aika);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
debug.setText(Integer.toString(aika));
if (isKaynnissa()) {
arvoNappi();
}
}
});
} catch (InterruptedException e) {
return;
} catch (Exception e) {
return;
}
if (aika < 550) {
uusiaika = 3;
} else if (aika < 450) {
uusiaika = 2;
} else if (aika < 350) {
uusiaika = 1;
}
aika = aika - uusiaika;
}
aika = aloitusaika;
unfocusButtons();
arvotutLuvut.clear();
}
隨機焦點選擇器:
public void arvoNappi() {
Random random = new Random();
int uusirandom = (int) (4 * random.nextDouble() + 1);
while (uusirandom == painettavaNappi) {
uusirandom = (int) (4 * random.nextDouble() + 1);
}
painettavaNappi = uusirandom;
tvrandom.setText(Integer.toString(painettavaNappi));
if (painettavaNappi == 1) {
arvotutLuvut.add(1);
btnPun.setFocusable(true);
btnPun.requestFocusFromTouch();
} else if (painettavaNappi == 2) {
arvotutLuvut.add(2);
btnVio.setFocusable(true);
btnVio.requestFocusFromTouch();
} else if (painettavaNappi == 3) {
arvotutLuvut.add(3);
btnVih.setFocusable(true);
btnVih.requestFocusFromTouch();
} else {
arvotutLuvut.add(4);
btnSin.setFocusable(true);
btnSin.requestFocusFromTouch();
}
}
每次將按鈕放在線程內部時,將對該按鈕的引用存儲在類可訪問的變量中。
然后,除了您的程序邏輯外,在按鈕的onClickListener上,將焦點請求到最后一個焦點按鈕。
不確定是否會阻止您的單擊更改按鈕的圖像並引起一些故障。 如果是這種情況,您可以嘗試使用TouchListener來執行點擊檢測。
我終於用imageviews做到了,所以我可以隨意切換圖片
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.