Android:样式不适用于按钮

问题描述 投票:0回答:2

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.xmlCPanel.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);
    }
}

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

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

android
2个回答
0
投票

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

希望这可以帮助!


0
投票

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

将其直接应用于视图:

<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

<item name="buttonStyle">@style/MyButtonStyle</item>
© www.soinside.com 2019 - 2024. All rights reserved.