在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);
}
}
然后我将此面板布局添加到主要活动的布局中
但是当我将此按钮添加到任何活动中时,不会应用样式。这堂课怎么了?我知道我可以在布局文件中应用样式,但是我需要在代码中完成
答案 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