Android GridView中設置了Button以后就不能響應OnItemClick()


當我們在GridView或者ListView里面設置了Textiew的時候,假如我們不給Textiew設置onlick()的話,那么Gridiew的OnItemClick()就是可以執行的,但是當把TextView換成是Button的時候我們也不設置onClick()的話,GridView的OnItemClick()也是不能執行的,為什么呢,這說明Button和TextView內部事件方面有區別,去查看Button的源代碼,代碼很少就這么幾句
public class Button extends TextView {
    public Button(Context context) {
        this(context, null);
    }

    public Button(Context context, AttributeSet attrs) {
        this(context, attrs, com.android.internal.R.attr.buttonStyle);
    }

    public Button(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
所以,主要的貓膩還是在com.android.internal.R.attr.buttonStyle這個里面,查看這個xml文件,Button設置多了兩個屬性如下:
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
所以我們要在代碼里面把這兩個屬性設為false,這樣就可以響應GridView的onItemClick方法了,但是一定要注意,不管是Button,還是TextView,只要設置了onClick() 的話,那么OnItemClick()就不會被執行(以上的內容都是基於一個GridView或者是ListView的每個Item只有一項,要不是Button,要不是TextView,不是這種情況的,上面的就只能參考一下了)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM