我对Android很陌生,并且在动态创建Button时遇到问题。我通过在Xml布局中创建并正常工作。希望有人可以提供帮助,编写代码以在运行时创建下面的按钮,然后将其添加到TableRow中。
注意:我想创建一个Button,它相当于下面的Xml,但不使用findViewById(),因为这个按钮不存在。我知道如何创建一个Button,但我在设置下面的所有属性时遇到了困难。特别是layout_weight,background和drawableTop。
<Button
android:id="@+id/BtnRating1"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="@string/Rating_1"
android:drawableTop="@drawable/face_1"
style="?android:attr/borderlessButtonStyle"
android:background="?android:selectableItemBackground"
android:gravity="center"
android:onClick="OnRating_1" />
答案 0 :(得分:1)
假设上面的xml名为button_view.xml
View view = LayoutInflater.from(context).inflate(R.layout.button_view);
Button button = (Button) view.findViewById(R.id.BtnRating1);
这样你可以直接从xml充气
答案 1 :(得分:0)
我为您提供了如何在动态时间创建按钮的代码,您可以为此按钮设置所需的所有属性。
Button myButton = new Button(this);
myButton.setText("Push Me");
LinearLayout ll = (LinearLayout)findViewById(R.id.BtnRating1);
LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
ll.addView(myButton, lp);
答案 2 :(得分:0)
以下行将以编程方式创建按钮
Button btn = new Button(ActivityContext);
然后您还可以添加按钮属性,如下所示
RelativeLayout.LayoutParams btnparamLayoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, 90);
btn.setGravity(Gravity.CENTER_VERTICAL);
btnparamLayoutParams.height = adjustedDp;
btn1paramLayoutParams.setMargins(0, 0, 0, 100);
btn.setLayoutParams(btnparamLayoutParams);
btn.setBackgroundColor(Color.WHITE);
最后将您的按钮添加到父版面。
答案 3 :(得分:0)
你可以双向进行
TableRow.LayoutParams params = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT);
Button button = new Button(this);
params.weight = 1;
params.gravity = Gravity.CENTER;
tablerow.addView(button,params);
这是活动的背景。