onInterceptTouchEvent解決GridView和ImageButton焦點共存的問題

來源:互聯網
上載者:User

           我們知道ViewGroup中的子類大部分有Layout這種布局,而View中的子類主要是各種控制項,當你在螢幕點擊的時候,它的事件處理是怎樣的呢?

           onInterceptTouchEvent是ViewGroup中的方法,點擊螢幕後:

          Activity------->onInterceptTouchEvent();

          ViewGroup-------->onInterceptTouchEvent();

          View---------------->onInterceptTouchEvent();

     預設onInterceptTouchEvent()中返回的是false,這樣觸摸事件可以傳遞給下一層,如果設為true,則無法傳遞。

          要把GridView中的ImageButton焦點給屏蔽,可以用上面的思想,把GridView看成是一個ViewGroup,具體代碼如下:

java代碼中:

           public class MyGridView extends GridView {
public MyGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public MyGridView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
return true;
}
}


xml代碼中:

         <com.example.filemanage.MyGridView       
   android:id="@+id/gridView"  
   android:layout_width="wrap_content"  
   android:layout_height="wrap_content"  
    android:layout_below="@+id/Title"
    android:layout_above="@+id/btnSel"
android:scrollbars="vertical"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"  
    android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"/>


最後需要在GridView的item xml檔案的布局中,加上一句android:descendantFocusability="blocksDescendants"

這樣就可以屏蔽ImageButon的響應。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.