찾다

 >  Q&A  >  본문

android-studio - android gridlayout动态多行多列的问题

代码和效果图如上,请问

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");

}

PHP中文网PHP中文网2771일 전929

모든 응답(3)나는 대답할 것이다

  • PHPz

    PHPz2017-04-18 09:06:11

    1. 시스템 버튼의 기본 스타일로 인해 버튼 사이에 여백이 발생합니다. Button 기본 스타일의 배경 이미지는 주위에 공백이 있는 insetDrawable입니다. 공백 문제를 해결하기 위해 Button의 배경을 직접 설정하여 공백을 없앨 수 있습니다.

    2. GridLayout은 GridView와는 달리 하위 컨트롤의 배치만 담당하며 하위 컨트롤의 위치 정보 기록 및 클릭 이벤트 배포에 대한 책임은 없습니다. 이를 위해서는 각 하위 컨트롤을 개별적으로 모니터링해야 합니다.
      GridLayout에서 하위 컨트롤의 위치를 ​​얻으려면 코드가 동적으로 생성되었는지, xml 파일을 통해 구성되지 않았는지에 따라 달라집니다. View.setTag(를 통해 자체 위치 정보를 하위 컨트롤에 바인딩할 수 있습니다. ) 하위 컨트롤을 생성할 때 컨트롤에서 onClick() 이벤트의 View.getTag()를 통해 위치 정보를 얻습니다.

    도움이 되었기를 바랍니다.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:06:11

    항목 보기 너비를 match_parnet으로 설정하세요

    회신하다
    0
  • PHPz

    PHPz2017-04-18 09:06:11

    GridLayout을 꼭 사용해야 하나요? 대신 GridView나 RecycleView를 사용해도 됩니다. 저는 GridView가 더 좋다고 생각합니다

    회신하다
    0
  • 취소회신하다