代码和效果图如上,请问
1,如何将按钮紧密连接在一起,像扫雷游戏那样?我设置了margin,都不行。
2,如何在点击其中一个按钮后,获取它在gridlayout的位置呢?代码如下,没有效果
/**
点击事件
*/
private View.OnClickListener clickListener = new View.OnClickListener() {
@Override
public 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");
}
PHPz2017-04-18 09:06:11
시스템 버튼의 기본 스타일로 인해 버튼 사이에 여백이 발생합니다. Button 기본 스타일의 배경 이미지는 주위에 공백이 있는 insetDrawable입니다. 공백 문제를 해결하기 위해 Button의 배경을 직접 설정하여 공백을 없앨 수 있습니다.
GridLayout은 GridView와는 달리 하위 컨트롤의 배치만 담당하며 하위 컨트롤의 위치 정보 기록 및 클릭 이벤트 배포에 대한 책임은 없습니다. 이를 위해서는 각 하위 컨트롤을 개별적으로 모니터링해야 합니다.
GridLayout에서 하위 컨트롤의 위치를 얻으려면 코드가 동적으로 생성되었는지, xml 파일을 통해 구성되지 않았는지에 따라 달라집니다. View.setTag(를 통해 자체 위치 정보를 하위 컨트롤에 바인딩할 수 있습니다. ) 하위 컨트롤을 생성할 때 컨트롤에서 onClick() 이벤트의 View.getTag()를 통해 위치 정보를 얻습니다.
도움이 되었기를 바랍니다.
PHPz2017-04-18 09:06:11
GridLayout을 꼭 사용해야 하나요? 대신 GridView나 RecycleView를 사용해도 됩니다. 저는 GridView가 더 좋다고 생각합니다