2011-10-20 11 views
1

Android ListView headerview無法響應點擊事件,有時當headerview通過keybord模式獲取焦點時,然後在觸摸模式下點擊它。 回覆此方案的步驟: 1.滾動listview直到headerview從視線中消失 2.使headerview通過鍵盤模式獲得焦點 3.單擊觸摸模式下的headerview 然後headerview只能響應touch事件,並且無法響應點擊事件。但在某些設備中,這種情況不會發生。Android ListView headerview無法響應點擊事件,有時當headerview通過keybord模式獲取焦點,然後在觸摸模式下點擊它

所期待的:在headerview可以響應點擊事件,我們看到的任何時間

Android版本:2.2/2.3 設備:帶軌跡球或硬鍵盤的一些設備

我需要headerview可以響應隨時點擊事件。那麼有人可以找出這種情況的原因?並給我一些建議來解決這個問題? 任何提示感謝,提前感謝。

+0

您是否在標題視圖中的View上使用onItemClickedListener或onClickListener? – FunkTheMonk

+0

是的,我真的在列表上使用onItemClickedListener,但是HeaderView也有一個onClickListener。 – user1004791

回答

0

我有同樣的問題。我不知道爲什麼它很奇怪,但我能夠通過不使用addHeaderView()來解決問題。

剛剛從適配器添加頁眉的行的一部分:mListView.setItemsCanFocus(true);

@Override 
public int getItemViewType(int position) { 
    return position == 0 ? 0 : 1; 
} 

@Override 
public int getViewTypeCount() { 
    return 2; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 

    if (v == null) { 
     if (getItemViewType(position) == 0) { 
      LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.music_list_header_view_2, null); 
     } else { 
      LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      v = vi.inflate(R.layout.music_favorite_list_row, null); 
     } 
    } 
} 

希望它能幫助!

相關問題