以编程方式设置android xml
Posted
技术标签:
【中文标题】以编程方式设置android xml【英文标题】:Programmatically set android xml 【发布时间】:2014-07-23 22:28:29 【问题描述】:<Button
android:id="@+id/pin1"
android:layout_
android:layout_
android:layout_alignTop="@+id/pin2"
android:layout_toLeftOf="@+id/pin2"
android:onClick="PIN"
android:text="1" />
<Button
android:id="@+id/pin2"
android:layout_
android:layout_
android:layout_above="@+id/pin5"
android:layout_alignLeft="@+id/pin5"
android:onClick="PIN"
android:text="2" />
<Button
android:id="@+id/pin3"
android:layout_
android:layout_
android:layout_alignTop="@+id/pin2"
android:layout_toRightOf="@+id/pin2"
android:onClick="PIN"
android:text="3" />
<Button
android:id="@+id/pin4"
android:layout_
android:layout_
android:layout_alignTop="@+id/pin5"
android:layout_toLeftOf="@+id/pin5"
android:onClick="PIN"
android:text="4" />
<Button
android:id="@+id/pin5"
android:layout_
android:layout_
android:layout_above="@+id/pin8"
android:layout_alignLeft="@+id/pin8"
android:onClick="PIN"
android:text="5" />
<Button
android:id="@+id/pin6"
android:layout_
android:layout_
android:layout_alignTop="@+id/pin5"
android:layout_toRightOf="@+id/pin5"
android:onClick="PIN"
android:text="6" />
<Button
android:id="@+id/pin7"
android:layout_
android:layout_
android:layout_alignTop="@+id/pin8"
android:layout_toLeftOf="@+id/pin8"
android:onClick="PIN"
android:text="7" />
<Button
android:id="@+id/pin8"
android:layout_
android:layout_
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:onClick="PIN"
android:text="8" />
<Button
android:id="@+id/pin9"
android:layout_
android:layout_
android:layout_alignTop="@+id/pin8"
android:layout_toRightOf="@+id/pin8"
android:onClick="PIN"
android:text="9" />
<Button
android:id="@+id/pinclear"
android:layout_
android:layout_
android:layout_alignTop="@+id/pin0"
android:layout_toLeftOf="@+id/pin0"
android:onClick="PIN"
android:text="*" />
<Button
android:id="@+id/pin0"
android:layout_
android:layout_
android:layout_below="@+id/pin8"
android:layout_alignLeft="@+id/pin8"
android:onClick="PIN"
android:text="0" />
<Button
android:id="@+id/pincheck"
android:layout_
android:layout_
android:layout_alignTop="@+id/pin0"
android:layout_toRightOf="@+id/pin0"
android:onClick="PIN"
android:text="#" />
我将如何在 Activity 中进行编程? 如果有帮助,它应该是一个数字键盘。 它用于自定义视图中
我将如何在 Activity 中进行编程? 如果有帮助,它应该是一个数字键盘。 它用于自定义视图中
【问题讨论】:
【参考方案1】:你需要使用 GridLayout
类似这样的:
GridLayout buttonLayout = new GridLayout(this);
buttonLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
buttonLayout.setOrientation(GridLayout.HORIZONTAL);
buttonLayout.setColumnCount(3); //Amount of colums
for(int i = 0; i < numberOfButtons; i++)
Button b = new Button(this);
b.setText(i);
b.setPadding(5,5,5,5);
b.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
//Do Something on click
buttonLayout.addView(b);
要进行修复,您需要实例化 LayoutParams
变量和调用 b.setLayoutParams(paramsVariable)
【讨论】:
【参考方案2】:您可以使用简单的 for 循环以编程方式轻松创建所有按钮,该循环重复添加所需布局上的所有按钮。(在以下情况下,线性布局)
LinearLayout layout = (LinearLayout) findViewById(R.id.linear_layout_tags);
layout.setOrientation(LinearLayout.VERTICAL); //Can also be done in xml by android:orientation="vertical"
for (int i = 0; i < 3; i++)
LinearLayout row = new LinearLayout(this);
row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
for (int j = 0; j < 4; j++
Button btnTag = new Button(this);
btnTag.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
btnTag.setText("Button " + (j + 1 + (i * 4));
btnTag.setId(j + 1 + (i * 4));
row.addView(btnTag);
layout.addView(row);
【讨论】:
这会将第 8 个按钮android:id="@+id/pin8"
放在中间吗?以上是关于以编程方式设置android xml的主要内容,如果未能解决你的问题,请参考以下文章
Android:如何以编程方式设置 LinearLayout 边距
Android:以编程方式将颜色设置为 ProgressBar