以编程方式设置按钮样式

4
所以我正在以编程方式创建新按钮并将它们添加到LinearLayout中,但是我想用预定义的样式初始化这些按钮。我花了一些时间搜索解决方案并尝试答案,但似乎仍然无法使其正常工作。
当我向布局添加一个新按钮时,它应该看起来像这张图片上面的按钮。
我尝试在res/values/中创建一个xml文件,并使用new Button(context, null, R.style.ChoiceButton)初始化按钮,但结果不起作用,导致发生这种情况
我还尝试了一种解决方法,即为按钮创建一个新的布局xml,并使用(Button)getLayoutInflater().inflate(R.layout.choice_buttton_layout, null),但这也不起作用,结果是这样(两个按钮显示缺少边距)res/values/choice_button.xml
<resources>
    <style name="ChoiceButton">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_gravity">center_horizontal</item>
        <item name="android:layout_marginBottom">7dp</item>
        <item name="android:minWidth">250dp</item>
        <item name="android:background">#ff27ae60</item>
        <item name="android:textColor">#ffffffff</item>
        <item name="android:enabled">true</item>
    </style>
</resources>

Main.java代码片段

public void btnAdd_click(View view) {
        Button newBtn = new Button(getApplicationContext(), null, R.style.ChoiceButton);
        newBtn.setText("new button");
        newBtn.setId(Util.generateViewId());

        LinearLayout layout = (LinearLayout)findViewById(R.id.layoutTop);
        layout.addView(newBtn);
    }

activity_main.xml

内容过长,请点击链接查看。

我是否遗漏了什么?这是否可能实现?

1个回答

1

好的@kin3tik,我找到了一个旧应用程序,其中包含一些自定义按钮..看看它是什么样子:

enter image description here

这是一个关于一个按钮的XML代码:

<Button
                android:id="@+id/num1"
                android:layout_width="110dp"
                android:layout_height="100dp"
                android:layout_marginRight="5dp"
                android:layout_weight="1"
                android:text="@string/num1"
                android:textSize="20sp" />

我创建了一个名为custombutton.xml的文件,放在drawable文件夹中。
<shape xmlns:android="http://schemas.android.com/apk/res/android">

<solid android:color="@color/bleuperso"/> // you can put #XXXXXX for the color you want 
<corners android:radius="4dp"/>

而我只是把样式放在Java中:

Bfrancois.setBackgroundResource(R.drawable.custombutton);

使用这个,你应该能够找到自己 ;)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接