将点击的按钮聚焦在Android活动中

时间:2012-02-16 14:33:41

标签: android google-tv android-button

我在Activity中有多个按钮。每个按钮都会打开一个单独的 AlertDialog 。当应用程序启动时,我点击鼠标按钮,我希望点击按钮获得焦点..所以我也可以通过D-Pad按钮导航。但它没有,更糟糕的是,如果活动中的任何其他项目没有焦点,焦点有时会永远丢失...所以我无法使用D-Pad按钮进行导航......

我想澄清一下,这不是因为 actionItem.requestFocus()设置后打开的 AlertDialog ..我通过评论Dialog开启代码进行检查太......但没有运气

我想按照以下方式进行:

public void buttonClicked(View actionItem){

    //Set focus on clicked button -- but this does not work
    actionItem.requestFocus();

    switch(actionItem.getId()){
    case R.id.btnLogin:
        //Show AlertDialog 1
        break;
    case R.id.btnInfo:
        //Show AlertDialog 2
        break;
    case R.id.btnClose:
        //Show AlertDialog 3
        break;
    }
}

我希望在任何AlertDialog打开之前,单击的按钮具有焦点..所以当AlertDialog关闭时,单击的按钮将具有焦点。

buttonClicked 事件已注册多个按钮..我将其设置如下:

<Button
    android:id="@+id/btnClose"
    style="@style/button"
    android:onClick="buttonClicked"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:drawableLeft="@drawable/close"
    android:focusable="true"
    android:text="Exit" />

<Button
    android:id="@+id/btnInfo"
    style="@style/button"
    android:onClick="buttonClicked"                
    android:layout_marginRight="5dp"
    android:layout_toLeftOf="@+id/btnClose"
    android:layout_centerVertical="true"
    android:drawableLeft="@drawable/information"
    android:focusable="true"
    android:text="About" />

在每个按钮点击时调用 buttonClicked 功能,但该按钮无法获得焦点...

任何想法?

1 个答案:

答案 0 :(得分:0)

尝试在方法的开头调用requestFocus(),而不是在每个case中调用它。然后你可以确定它是你设置焦点的正确元素。

示例:

switch(actionItem.getId()){
case R.id.btnLogin:
actionItem.requestFocus()
    break;
}

这是我最好的猜测,它对我有用。

祝你好运:)