2015-04-04 57 views
0

我在生成多个按钮并添加它们的一些属性时遇到了问题。我试图在屏幕上显示100个小按钮,每当我点击其中一个按钮时,它应该将其文本更改为“X”。在Android中生成按钮

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.game_layout); 
    GridLayout buttLayout = (GridLayout) findViewById(R.id.buttLayout); 

    for (int i = 1; i < 100; i++) { 
     LinearLayout.LayoutParams parameters = new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.WRAP_CONTENT, 
       LinearLayout.LayoutParams.WRAP_CONTENT 
     ); 
     final Button bet = new Button(this); 
     bet.setHeight(5); 
     bet.setWidth(5); 
     bet.setText(""); 
     bet.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       bet.setText("X"); 
      } 
     }); 
     buttLayout.addView(bet, parameters); 
    } 
} 

和XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical"> 

<GridLayout 
    android:layout_width="match_parent" 
    android:layout_height="400dp" 
    android:orientation="horizontal" 
    android:gravity="left" 
    android:id="@+id/buttLayout" 
    android:columnCount="10" 
    android:rowCount="10"> 
    </GridLayout> 
</LinearLayout> 

我敢肯定有这样做的更好的办法,但我刚开始编程的Android/Java和不能找到一个更好的办法。任何帮助,将不胜感激。由于

回答

1

您需要箱子只按钮循环

OnClickListener OnButtonClick = new OnButtonClick(); 

GridLayout buttLayout = (GridLayout) findViewById(R.id.buttLayout); 
LinearLayout.LayoutParams parameters = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.WRAP_CONTENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT 
    ); 

for (int i = 1; i < 100; i++) { 

    final Button bet = new Button(this); 
    bet.setHeight(5); 
    bet.setWidth(5); 
    bet.setText(""); 
    bet.setOnClickListener(OnButtonClick); 
    buttLayout.addView(bet, parameters); 

    } 

} 

//在点击监听所有按钮

public class OnButtonClick implements View.OnItemClickListener{ 

    public void onClick(View v) { 
      bet.setText("X"); 
     } 

} 
+0

感谢您的帮助,但仍然没有解决我的问题 - 事实上按钮就像[this](http://i.imgur.com/1367GEM.jpg)一样传播,我似乎无法编辑它们。 – Prokmi 2015-04-04 20:00:49