2016-10-25 90 views
0

我在我的應用程序中有一個簡單的界面 - 屏幕頂部的按鈕,屏幕中心的EditText以及底部的2個按鈕。 現在我想使用dpad瀏覽應用程序的元素,除了EditText之外,一切都可以正常工作 - 基本上我可以通過項目瀏覽,按鈕在焦點上突出顯示,但不是EditText - 即使點擊dpad中心按鈕(所以鍵盤不顯示)。例如,當我突出顯示頂部元素並按下dpad時,頂部按鈕失去焦點,底部的2個按鈕都沒有獲得焦點,因此它看起來像是獲取焦點的EditText,但它不以任何方式突出顯示,也不顯示鍵盤。當我用coursor(或觸摸設備)點擊它時,一切正常。使用dpad製作EditText增益焦點

我試着加入OnKeyListener檢查,但似乎並沒有斷火 - 像EditText上並沒有真正得到重點和該KeyEvent不會觸發上的EditText:

editKanal.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (event.getAction() == KeyEvent.ACTION_DOWN) 
       if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER){ 
        Toast.makeText(getApplicationContext(), "got the focus", Toast.LENGTH_LONG).show(); 
        return true; 
       } 

      return false; 
     } 
    }); 

誰能告訴我我做錯了什麼?如何使EditText顯示DPAD_CENTER上的鍵盤按下?

+0

您是否在佈局中添加了下一個焦點?也是同一佈局內的所有項目? –

+0

Thanks @ Hala.m - 你引導我走向正確的方向! 我有nextFocusDown設置,但元素是在不同的佈局 - 當我擺脫了許多佈局,並放置在一個相對的一切突然它開始工作就好了。 – exx

回答

0

你好過這個問題之前 最有可能的原因是

1,不添加重心下移

2中相同的佈局不是

請確保兩者都是真的項目

+1

謝謝!簡化佈局取得了訣竅! – exx

0

試着把這行後點擊:

editKanal.requestFocus(); 

如果不工作,你可以發表你的XML佈局?

+0

嘗試過,沒有運氣 - 它沒有工作,因爲TextEdit似乎根本沒有焦點,所以KEYCODE_DPAD_CENTER事件從未觸發,但上面的@ Hala.m指導我解決方案。我不得不重做我的佈局,所以不同的佈局沒有嵌套,它的工作! – exx