簡體   English   中英

如何在按鈕之間切換焦點而不失去對單擊按鈕的關注

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM