Android:样式不适用于按钮

时间:2019-04-14 07:56:18

标签: android

styles.xml中,我得到了:

<style name="MyButtonStyle">
    <item name="android:buttonStyle">@style/Base.Widget.AppCompat.Button.Borderless</item>
    <item name="android:textSize">24px</item>
    <item name="android:drawablePadding">4dp</item>
    <item name="android:textColor">@color/menuButtonForecolor</item>
    <item name="android:textStyle">bold</item>
</style>

我想在CMyButton.java中使用这种样式

public class CMyButton extends AppCompatButton {

    private static int getDefStyleId()
    {
        return R.style.MyButtonStyle;
    }

    protected void initThis() {

    }

    public CMyButton(Context context) {

        this(context,null, getDefStyleId());
    }

    public CMyButton(Context context, AttributeSet attrs) {
        this(context, attrs, getDefStyleId());
    }

    public CMyButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.initThis();
    }
}

我在panel_layout.xml中使用此按钮:

<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/LinearLayoutTheme">

    <college.test.progs.CMyButton
        android:id="@+id/showFacultiesButton"
        android:text="@string/faculties_button_title"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</merge>

panel_layout.xml用在CPanel.java

public class CPanel extends LinearLayout {

    private CMyButton facultiesButton;

    protected void initThis(Context context) {
        inflate(getContext(),R.layout.panel_layout,this);
        this.facultiesButton = (CMyButton) findViewById(R.id.showFacultiesButton);
    }

    public CPanel(Context context) {
        this(context,null);
    }

    public CPanel(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public CPanel(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.initThis(context);
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public CPanel(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        this.initThis(context);
    }
}

然后我将此面板布局添加到主要活动的布局中

但是当我将此按钮添加到任何活动中时,不会应用样式。这堂课怎么了?我知道我可以在布局文件中应用样式,但是我需要在代码中完成

2 个答案:

答案 0 :(得分:0)

您是否将MyButtonStyle更改为主题的android:buttonStyle属性值?

希望这会有所帮助!

答案 1 :(得分:0)

有两种方法可以将样式应用于视图:

直接将其应用于视图:

ones_matrix(n) * somenumber

通过<college.test.progs.CMyButton android:id="@+id/showFacultiesButton" android:text="@string/faculties_button_title" android:gravity="center" android:style="@style/MyButtonStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 文件将其应用于Application

style.xml