在过去的几天里,我一直在尝试弄清楚如何制作一个按钮列表,这些按钮彼此下方,并动态填充屏幕的整个宽度。例如:
(我很便宜地拍了一张已有的只有一个按钮的屏幕截图,然后在 paint.net 中对其进行了编辑,使其看起来像按钮堆叠在一起。)
所以,基本上,我有一个来自 R 的字符串列表,其中包括按钮的名称,我需要像这样列出它们。我一直在四处寻找,如果我确实发现了任何过时的东西(并且没有用)
这就是我目前所拥有的(它有点乱,因为它包含了实现这一目标的许多尝试)
LinearLayout layout = (LinearLayout) findViewById(R.id.mainLayout);
Field[] fields = R.raw.class.getFields();
for(int count=0; count < fields.length; count++){
String filename = fields[count].getName();
try {
Button button = new Button(this);
button.setText(filename);
button.setId(startID + 1 + count); //this variable is offscreen
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//finish later
}
});
button.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
layout.addView(button);
} catch (Exception e) {
Toast.makeText(MainActivity.this, "Exception.", Toast.LENGTH_LONG).show();
}
}
(这是在 onCreate()
中供引用)
因此,如果有人对我如何做到这一点有任何解决方案/想法,请分享。我对创建 Android 应用程序还很陌生。
最佳答案
Java
LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
String[] items = {"item 1", "item 2", "item 3", "item 4", "item 5"};
for (int i = 0; i < items.length; i++) {
Button btn = new Button(this);
btn.setText(items[i]);
btn.setId(i);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
params.setMargins(10, 10, 10, 10);
btn.setLayoutParams(params);
layout.addView(btn);
}
XML
<LinearLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
关于java - 如何动态地在彼此下方添加按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33336058/