Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用AppCompat库创建自定义按钮?_Android_Android Custom View_Android Appcompat - Fatal编程技术网

Android 如何使用AppCompat库创建自定义按钮?

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; /** *

是否可以在不丢失AppCompat特性(如着色/着色/阴影)的情况下扩展Button类


现在,如果我创建扩展按钮的自定义类并在布局中使用它,它将变成白色背景/黑色前景。

例如,自定义按钮:

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>

重要注意事项:

  • MyButton应该扩展
    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>
    
    
    
    重要注意事项:

  • MyButton应该扩展
    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?我从来没有这样做过,因为从类的扩展继承了?我从来没有这样做过,因为从类扩展继承了。