android-studio - android gridlayout动态多行多列的问题
PHP中文网
PHP中文网 2017-04-18 09:04:11
0
3
933

代码和效果图如上,请问

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中文网

认证0级讲师

répondre à tous(3)
PHPzhong
  1. 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.

  2. 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

PHPzhong

Dois-je utiliser GridLayout ? Vous pouvez utiliser GridView ou RecycleView à la place. Je pense que GridView est meilleur

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal