android 通過shape設置圓形按鈕


Android中常常使用shape來定義控件的一些顯示屬性來美化UI;

shape的常用屬性有:

(1)solid:填充,設置填充的顏色;

(2)stroke:描邊,設置邊界的寬度、顏色等;

(3)corners:圓角,五個屬性,全部設置的話,會覆蓋;

  android:radius="20dp"                          設置四個角的半徑

  android:topLeftRadius="20dp"              設置左上角的半徑 
  android:topRightRadius="20dp"            設置右上角的半徑 
  android:bottomLeftRadius="20dp"        設置右下角的半徑 
  android:bottomRightRadius="20dp"      設置左下角的半徑

(4)padding:定義內容離邊界的距離,其中的屬性類似於android:padding_left,android:padding_right;

(5)gradient:對應顏色漸變;當設置填充顏色后,無漸變效果,android:angle 是指從哪個角度開始變,angle的值必須是45的倍數(包括0),僅在type="linear"有效,不然會報錯;

(6)size:設置大小;

例如:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/hello_world"
        android:textSize="30sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/roundButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:background="@layout/shape1"
            android:text="@string/button1" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:background="@layout/shape2"
            android:text="@string/button1" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:background="@layout/shape3"
            android:text="@string/button1" />
    </LinearLayout>

</LinearLayout>

shape1.xml:

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

    <!-- 填充的顏色 -->

    <solid android:color="#99FFFF" />

    <!-- 設置按鈕的四個角為弧形 -->

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

    <!-- padding:Button里面的文字與Button邊界的間隔 -->

    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" />

</shape>

shape2.xml

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

    <!-- 填充的顏色 -->

    <solid android:color="#FFCC66" />

    <!-- 設置按鈕的左下角和右下角是圓形邊框 -->

    <corners
        android:bottomLeftRadius="20dp"
        android:bottomRightRadius="20dp" />

    <!-- 描邊 -->

    <stroke
        android:width="1dp"
        android:color="#000000" />

    <!-- padding:Button里面的文字與Button邊界的間隔 -->

    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" />

</shape>

shape3.xml

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

    <!-- 填充的顏色 -->

    <solid android:color="#996600" />

    <!-- 設置按鈕的左上角和右上角為圓形邊框 -->

    <corners
        android:topLeftRadius="20dp"
        android:topRightRadius="20dp"
        />

    <!-- padding:Button里面的文字與Button邊界的間隔 -->

    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" />

</shape>

MainActivity.java

package com.xiaozhang.listview2;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

    Button roundButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        roundButton = (Button) findViewById(R.id.roundButton);
        
        roundButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "你點擊了圓角按鈕", Toast.LENGTH_LONG)
                        .show();
            }
        });
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM