以编程方式设置按钮样式

时间:2014-07-29 13:45:18

标签: java android android-layout

所以我以编程方式创建新按钮并将它们添加到LinearLayout,但是我想用预定义的样式初始化这些按钮。我花了一些时间寻找解决方案并尝试解答,但我似乎仍无法让它发挥作用。

当我向布局添加新按钮时,它应该看起来像this picture中的按钮(靠近顶部)。

我尝试在res / values /中创建一个xml文件,并使用new Button(context, null, R.style.ChoiceButton)初始化一个按钮,但它不起作用,导致this happening

我还尝试了为按钮创建新布局xml并使用(Button)getLayoutInflater().inflate(R.layout.choice_buttton_layout, null)的解决方法,但这也无效,resulting in this (two buttons to show lack of margin)

RES /值/ 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中

A bit long to paste in here.

我有什么东西不见了吗?这甚至可能吗?

1 个答案:

答案 0 :(得分: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" />

我在drawable文件夹custombutton.xml中创建了.xml文件:

<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);

有了这个,你应该能找到自己;)