Android 如何使用AppCompat库创建自定义按钮?
是否可以在不丢失AppCompat特性(如着色/着色/阴影)的情况下扩展Button类Android 如何使用AppCompat库创建自定义按钮?,android,android-custom-view,android-appcompat,Android,Android Custom View,Android Appcompat,是否可以在不丢失AppCompat特性(如着色/着色/阴影)的情况下扩展Button类 现在,如果我创建扩展按钮的自定义类并在布局中使用它,它将变成白色背景/黑色前景。例如,自定义按钮: package me.shikhov.buttontest; import android.content.Context; import android.support.v7.widget.AppCompatButton; import android.util.AttributeSet; /** *
现在,如果我创建扩展按钮的自定义类并在布局中使用它,它将变成白色背景/黑色前景。例如,自定义按钮:
package me.shikhov.buttontest;
import android.content.Context;
import android.support.v7.widget.AppCompatButton;
import android.util.AttributeSet;
/**
* Created by andrew on 19.01.16.
*/
public class MyButton extends
AppCompatButton
{
public MyButton(Context context) {
this(context, null);
}
public MyButton(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}
布局示例:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="me.shikhov.buttontest.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TEST BUTTON"
android:layout_centerInParent="true"
android:id="@+id/standard_button"
/>
<me.shikhov.buttontest.MyButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/Widget.AppCompat.Button"
android:text="MY BUTTON TEST"
android:layout_centerHorizontal="true"
android:layout_below="@id/standard_button"
/>
</RelativeLayout>
重要注意事项:
AppCompatButton
和而不是android.view.Button
android:theme
。该主题应派生自Widget.AppCompat.Button
theme例如,自定义按钮:
package me.shikhov.buttontest;
import android.content.Context;
import android.support.v7.widget.AppCompatButton;
import android.util.AttributeSet;
/**
* Created by andrew on 19.01.16.
*/
public class MyButton extends
AppCompatButton
{
public MyButton(Context context) {
this(context, null);
}
public MyButton(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}
布局示例:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="me.shikhov.buttontest.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TEST BUTTON"
android:layout_centerInParent="true"
android:id="@+id/standard_button"
/>
<me.shikhov.buttontest.MyButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/Widget.AppCompat.Button"
android:text="MY BUTTON TEST"
android:layout_centerHorizontal="true"
android:layout_below="@id/standard_button"
/>
</RelativeLayout>
重要注意事项:
AppCompatButton
和而不是android.view.Button
android:theme
。该主题应派生自Widget.AppCompat.Button
theme这就是你要找的吗?您可以从这个api开始:看看他是如何使用AppCompoact创建一个自定义浮动按钮的Library@Rohit5k2-不,我不是在寻找有风格的颜色,但是我需要一些带有AppCompatButton的所有渲染功能的自定义按钮。@zIronManbox-您的按钮完全覆盖了button buy的绘图。我只需要在类中添加一些逻辑,而不涉及渲染。我想,然后您必须为自定义视图类使用样式XML。我想,当您的自定义类被扩展时,BaseStyle xml就丢失了,我想您必须应用或重新定义BaseStyle。这就是您要寻找的吗?您可以从这个api开始:看看他是如何使用AppCompoact创建一个自定义浮动按钮的Library@Rohit5k2-不,我不是在寻找有风格的颜色,但是我需要一些带有AppCompatButton的所有渲染功能的自定义按钮。@zIronManbox-您的按钮完全覆盖了button buy的绘图。我只需要在类中添加一些逻辑,而不涉及渲染。我想,然后您必须为自定义视图类使用样式XML。我想,当您的自定义类被扩展时,BaseStyle xml就会丢失,我认为您必须应用或重新定义BaseStyle?我从来没有这样做过,因为从类的扩展继承了?我从来没有这样做过,因为从类扩展继承了。