如何创建自定义按钮?

时间:2016-10-26 07:48:46

标签: android android-layout button

我想在我的应用中创建一个自定义按钮,如下图所示: enter image description here

这是一个来自应用的按钮,当我按下它时,另一个活动开始。

如何创建这样的按钮?
我会感激任何帮助。

Editted:

button_back.xml:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >

<gradient
    android:angle="90"
    android:startColor="#4080FE"
    android:centerColor="#4080FE"
    android:endColor="#4080FE"
    android:type="linear" />

<corners
    android:radius="500dp"/>



<size
    android:width="40dp"
    android:height="40dp"
    />

并在布局中:

<Button
    android:layout_width="wrap_content"
    android:layout_height="80dp"
    android:drawableLeft="@drawable/btn"
    android:background="@drawable/button_back" 

    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="94dp" />

这是输出: enter image description here

我不希望这些红圈出现;我希望我的按钮与没有任何笨蛋的第一张照片相同。

感谢您的帮助。

上一版:

我使用了imageButton而不是按钮,这对我的情况来说是正确的解决方案。

5 个答案:

答案 0 :(得分:2)

尝试这种方式来获取视图的形状

创建go_btn.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >

    <gradient
        android:angle="90"
        android:startColor="#4080FE"
        android:centerColor="#4080FE"
        android:endColor="#4080FE"
        android:type="linear" />

    <corners
        android:radius="6dp"/>



    <size
        android:width="40dp"
        android:height="40dp"
        />


</shape>

然后将其添加到您的布局

<ImageView
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:padding="10dp"
        android:src="@drawable/autoorder"
        android:background="@drawable/go_btn"
        android:layout_gravity="center"
android:layout_marginTop="10dp"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Calender"
        android:layout_gravity="center"
        />

<强>输出

enter image description here

答案 1 :(得分:1)

您可以使用TextView

创建类似的内容

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/base"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:orientation="horizontal">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:drawableTop="@drawable/checked"
        android:gravity="center"
        android:text="Calander" />
</RelativeLayout>

答案 2 :(得分:1)

我认为您最好使用TextView并为其设置drawableTop,如下所示

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:drawableTop="@drawable/calendar"
    android:textSize="@dimen/textSizeSmall_SP"
    android:textColor="@color/textColor"
    android:gravity="center"
    android:text="Calender"
    android:paddingLeft="@dimen/smallMargin_SP"
    android:paddingRight="@dimen/smallMargin_SP"
    android:background="@drawable/green_border_no_corners"/>

enter image description here

答案 3 :(得分:0)

有很多不同的方式:

创建一个带有圆角的新LayerListDrawable,如下所示: https://stackoverflow.com/a/21002306/5778152

然后在您的XML文件中,创建Button并使用您创建的LayerList

或者您可以创建LinearLayout,使用带圆角的形状作为背景,并在其中添加ImageView来设置图标

答案 4 :(得分:0)

创建xml资源文件并将此资源添加到按钮背景属性: - )