代码和效果图如上,请问
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");
}
Il existe une marge entre les boutons, due au style par défaut du bouton système. L'image d'arrière-plan du style par défaut de Button est un insetDrawable entouré d'un espace blanc. Afin de résoudre le problème de l'espace blanc, vous pouvez définir vous-même un arrière-plan pour le bouton, afin d'éliminer l'espace.
GridLayout est différent de GridView dans le sens où il est uniquement responsable du placement des contrôles enfants et n'est pas responsable de l'enregistrement des informations d'emplacement des contrôles enfants ni de la distribution des événements de clic. Cela vous oblige à surveiller chaque sous-contrôle individuellement.
Afin d'obtenir la position du sous-contrôle dans GridLayout, cela dépend si votre code est généré dynamiquement et non configuré via un fichier XML. Vous pouvez lier ses propres informations de position au sous-contrôle via View.setTag. () lors de la génération du sous-contrôle, sur le contrôle, obtenez les informations de position via View.getTag() dans l'événement onClick().
J'espère que cela vous aidera.
Définissez simplement la largeur de la vue de l'élément sur match_parnet
Dois-je utiliser GridLayout ? Vous pouvez utiliser GridView ou RecycleView à la place. Je pense que GridView est meilleur