讓android radio button 按鈕圖示置中

一般來說android的預設radio button樣式長這樣

radio button

資料來源:Android Developer

當然在設計時可以有很多的變形,像是不顯示文字,只顯示按鈕,或是將按鈕圖示改為自己設計的美工圖檔…有很多的變形,但是其唯一不變的就是Radio Button的對齊方式,固定為靠左對齊,所以當不顯示文字時,按鈕依舊在左邊,無法置中。

如果想要在讓按鈕置中的話,就必須改寫一下程式碼,讓radio button在繪製時可以讓button置中。

當然網路上依舊是神人不斷~已經有開發者解決了這個問題,有興趣的開發者可以連結標題參考解決方式。

解決android:imeOptions=”actionDone”在中文輸入法時無回應的問題

若有開發android app的愛好者們,應該會很常用到EditText這一個widget

其中有個屬性為android:imeOptions,主要用於當使用者輸入完成後,按下某一個按鍵後,觸發OnEditorActionListener事件來處理一些東西。

例如設定android:imeOptions=”actionDone”,代表按下”done”或”enter”按鍵時,會觸發。

然而就在一切都很美好的狀況下,這玩意兒在中文輸入法時(以htc的手機為例),按下"enter"鍵都無回應。看來在中文輸入法的"enter"鍵沒有對應到actionDone。

那該怎麼解決呢?

分為兩部分,一部分是xml的描述,一部分是程式碼

  • 在layout xml描述部分,將android:imeOptions設定為”actionDone|actionUnspecified”
  • 程式碼部分,在OnEditorActionListener實現下列判斷式
 private OnEditorActionListener mInputOnEditorActionListener = new OnEditorActionListener() {

        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            boolean handled = false;
            // 若是按下Done or Enter都可輸入
            if (actionId == EditorInfo.IME_ACTION_DONE
                    || (actionId == EditorInfo.IME_ACTION_UNSPECIFIED && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
                    
                // 流程處理
                handled = true;
                
            } /* end of if */
            
            return handled;
        }

    };