1

我有以下按钮

<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="5dp"
android:textSize="10sp"
android:text="Button" />

现在在我的代码中,我想根据某些因素以编程方式生成这些按钮的动态数量。

现在我花了相当多的时间试图让以下代码工作:

 Button txtName = new Button(getActivity(), null, android.R.attr.buttonStyleSmall);
    txtName.setClickable(false);
    txtName.setTextSize(5);
    txtName.setMaxLines(1);
    txtName.setMaxHeight(40);
    txtName.setMinHeight(0);
    txtName.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
    txtName.setText(tagsList.get(i));

出于某种原因,该代码没有做我想要做的事情。请参阅我的其他问题:其他问题

但是我现在的问题是,我可以从上面的按钮中获取该布局代码,然后像使用列表适配器一样使用它来制作重复的按钮吗?

换句话说,我想要一个描述我的按钮布局的 xml,并且我希望它用于同一页面上的许多按钮?

4

3 回答 3

6

你正在寻找的是膨胀。

目前,您的方法很少使用 XML。您正在使用代码中的一些属性创建一个实际的新按钮,而不是使用您的 XML 布局。那也很好,顺便说一句。

无论如何,如果你想使用你的 XML 布局/按钮,你想使用 Android 的充气机:http: //developer.android.com/reference/android/view/LayoutInflater.html

看起来有点像这样;

LayoutInflater inflater = (LayoutInflater)context.getSystemService
      (Context.LAYOUT_INFLATER_SERVICE);
Button mButton = (Button) inflater.inflate(R.layout.button, null);

现在你已经在代码中得到了你的按钮,从你的按钮布局中膨胀。如果您想多次将其添加到某个视图,您可能需要手动为每个按钮设置不同的标签或 ID,以便以后识别它们。

于 2013-10-01T07:29:30.257 回答
3

您可以使用此代码从layot 获取xml 布局

Button button=(Button)LayoutInflater.from(MainActivity.this).inflate(R.layout.buttonlayout, null);

并根据需要使用它。

于 2013-10-01T07:35:35.937 回答
0

在同一个 Activity 中,每个 XML 视图都必须连接到一个视图,但是您可以为数十亿个按钮充气:)

final Button button = new Button(this);

        button.setText(day);
        final String whichDay = day;
        layout = (RelativeLayout) findViewById(R.id.newProgActivity);
        param = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
        param.addRule(RelativeLayout.BELOW, activityTitle.getId());
        param.setMargins(0, margins, 0, 0);
        layout.addView(button, param);

现在您可以使用

button.setId()

然后子按钮将获得该ID下方的规则..或将它们锚定到您的xml中的单个视图并使用setmargins()

于 2013-10-01T07:33:52.090 回答