android - 使用循环将按钮添加到android布局

标签 android loops button

我正在尝试使用 for each 循环将按钮添加到 Android 布局。我试图为按钮创建一个布局文件,然后我想将具有该布局的按钮添加到布局中。如果我使用注释代码在循环中创建新按钮,它会起作用,但如果我从布局文件创建新按钮,则不会。

public class MainActivity extends ActionBarActivity {
ArrayList<String> panel1 = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    panel1.add("1");
    panel1.add("2");


    for(String s : panel1){
        Button knap = (Button) findViewById(R.id.knap);
        //Button knap = new Button(this);
        knap.setText(panel1.get(i));
        LinearLayout l = (LinearLayout) findViewById(R.id.linearLayout1);
        l.addView(knap);
   }

包含按钮布局的 XML 文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="40dp"
android:clickable="true"
android:orientation="vertical"
android:paddingLeft="40dp"
tools:context=".MainActivity" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="39dp"
    android:gravity="center_vertical" >


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="knap"
        android:id="@+id/knap"
        android:background="#99D6D6"/>


</LinearLayout>

最佳答案

您应该将您的按钮添加到 xml 上定义的布局。首先,您的 xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:orientation="vertical"
    android:paddingLeft="40dp"
    tools:context=".MainActivity" >

    <LinearLayout
        android:id="@+id/linearLayout"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    </LinearLayout>

</LinearLayout>

然后在您的 java 代码中,您应该使用 ID 为 linearLayoutLinearLayout,将按钮添加到该布局中,如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    panel1.add("1");
    panel1.add("2");
    LinearLayout l = (LinearLayout) findViewById(R.id.linearLayout);

    for(String s : panel1){
        Button newButton = new Button(this);
        newButton.setText(panel1.get(i));
        newButton.setBackgroundColor(0xFF99D6D6);
        l.addView(newButton);
    }
}

关于android - 使用循环将按钮添加到android布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28426612/

相关文章:

java - Android 获取当前位置失败

android - 二态按钮 : Show current state or next state?

button - 取消时中止与取消按钮 : When do I use Abort,?

java - Firebase Firestore 同步/无回调检索数据

Android:时间监听器

PHP MYSQL While LOOP 不显示所有行

python - While 循环列表?

javascript - 使用javascript从输入开始循环到结束日期

Android:如何创建 3 个垂直点?

android - 在 android 4.4 中禁用硬件键(home、back、....)