底部導航欄原來採用radiogroup 但是中間凸出 所以中間採用view 的方式,但是出現view點擊兩次的問題,查看問題的原因是view焦點被radiobuttun搶佔,而單純的採用在佈局加<requestFocus> 、android:focusableInTouchMode="true"、android:focusable="true"、android:clickable="true"是不能解決問題的。我們要找到原因然後才能解決它。
子元素中如果是view(比如,LinearLayout等),容易被button等搶奪焦點,兩次生效通過debug發現第一次沒有響應,是獲取焦點,第二次纔是點擊操作。我們可以通過setOnFocusChangeListener檢測當前控件的焦點如果沒有焦點我們獲取焦點給它,這樣點擊一次就能實現啦。對於焦點問題,我們可以監聽和debug就能及時找到問題所在。
kongjian.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
}else{
fabu.requestFocus();
fabu.setFocusableInTouchMode(true);
fabu.setFocusable(true);
}
}
});