我有以下按钮
<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));
由于某些原因,代码没有按照我的意愿去做。请参阅我的其他问题:Other question
但是现在我的问题是,我可以从上面的按钮中获取该布局代码,然后使用它来制作重复按钮,就像使用列表适配器一样吗?
换句话说,我想要一个xml描述我的按钮布局,我想让它用于同一页面上的许多按钮?
答案 0 :(得分:5)
您正在寻找的是膨胀。
目前,您的方法几乎没有使用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,以便以后识别它们。
答案 1 :(得分:3)
您可以使用此代码从布局中获取xml布局
Button button=(Button)LayoutInflater.from(MainActivity.this).inflate(R.layout.buttonlayout, null);
并根据需要使用它。
答案 2 :(得分:0)
在同一个Activity no中,每个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()