android-studio - android gridlayout動態(tài)多行多列的問題
問題描述

代碼和效果圖如上,請問
1,如何將按鈕緊密連接在一起,像掃雷游戲那樣?我設(shè)置了margin,都不行。
2,如何在點擊其中一個按鈕后,獲取它在gridlayout的位置呢?代碼如下,沒有效果
/**
點擊事件*/
private View.OnClickListener clickListener = new View.OnClickListener() {
@Overridepublic void onClick(View v) {Button btn = (Button)v;GridLayout.LayoutParams params = (GridLayout.LayoutParams)btn.getLayoutParams();GridLayout.Spec spec = params.rowSpec;Log.d('AAA',params.rowSpec + 'aa');
}
問題解答
回答1:按鈕之間有margin,這是由系統(tǒng)Button默認(rèn)的style引起的。Button默認(rèn)的style的背景圖是一個insetDrawable,四周有留白。為了解決留白問題,你可以自己給Button設(shè)置一個background,這樣就可以消除間隙了。
GridLayout與GridView不同,它只負(fù)責(zé)子控件的位置擺放,不負(fù)責(zé)記錄子控件的位置信息和點擊事件的分發(fā)。這個需要你自己對每個子控件進(jìn)行單獨監(jiān)聽。為了獲取子控件在GridLayout中的位置,看你的代碼是動態(tài)生成的,不是通過xml文件配置,你可以在生成子控件的時候通過View.setTag()把自身的位置信息綁定到控件上,在onClick()事件中通過View.getTag()獲取位置信息。
希望對你有所幫助。
回答2:把item view的寬度設(shè)置成match_parnet就可以了
回答3:非要使用GridLayout嗎?可以使用GridView或者RecycleView替代呀,我覺得使用GridView更好一點
相關(guān)文章:
1. javascript - sublime快鍵鍵問題2. javascript - immutable配合react提升性能?3. vue.js - Vue 如何像Angular.js watch 一樣監(jiān)聽數(shù)據(jù)變化4. 實現(xiàn)bing搜索工具urlAPI提交5. javascript - 移動端上不能實現(xiàn)拖拽布局嗎?6. 如何解決Centos下Docker服務(wù)啟動無響應(yīng),且輸入docker命令無響應(yīng)?7. javascript - nodejs關(guān)于進(jìn)程間發(fā)送句柄的一點疑問8. thinkPHP5中獲取數(shù)據(jù)庫數(shù)據(jù)后默認(rèn)選中下拉框的值,傳遞到后臺消失不見。有圖有代碼,希望有人幫忙9. java - 使用fastjson對HashMap進(jìn)行序列化錯誤10. index.php錯誤,求指點

網(wǎng)公網(wǎng)安備