如何在按钮之间切换焦点而不会失去对单击按钮的关注

时间:2014-11-18 12:04:02

标签: android

我正在做速度游戏,其中线程更改集中在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();
        }
    }

2 个答案:

答案 0 :(得分:1)

每当您将一个按钮集中在线程中时,将该按钮的引用存储在您的类可访问的变量中。

然后,除了程序逻辑之外,在你的按钮的onClickListener上,请将焦点请求到最后一个聚焦按钮。

不确定是否会阻止您的点击更改按钮图像并导致一些故障。如果是这种情况,您可以尝试使用TouchListener执行单击检测。

答案 1 :(得分:1)

我终于用imageviews做了,所以我可以切换图片我想要的方式