1. 程式人生 > >XML自定義按鈕樣子-點選切換圖片

XML自定義按鈕樣子-點選切換圖片

自定義按鈕

樣本圖:



佈局layout-activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="zenglei.com.zawu.MainActivity">

    <Button
        android:text="Button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/a"/>
</RelativeLayout>
a.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/register_bg_press">
    </item>
    <item android:drawable="@drawable/register_bg_normal">
    </item>

</selector>
注:android:state_pressed="true  ---- 這裡代表是,當點選的時候反應

android:drawable="@drawable/register_bg_press"-----這裡管理的樣子ID

第二步,設定樣子

register_bg_press.xml

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


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


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


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


    <solid android:color="#33000000"></solid>
</shape>
android:shape=""; rectandle---矩形
ring---成環形
oval---橢圓形
line---線
android:radius="30dp" 半徑
solid 固體

點選切換圖片

效果圖:

這是layout佈局:activity_mian.xml-------drawableRight:這是狀態選擇器

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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:orientation="vertical"
    tools:context="zenglei.com.demoyes.MainActivity">
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="以下是效果圖"/>
<TextView
    android:id="@+id/item_match_friend_like"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:drawableRight="@drawable/like_bg_selector"
/>
</LinearLayout>
like_bg_selector:中的程式碼------android:state_selected="true",當被點選的時候。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item  android:state_selected="true" android:drawable="@mipmap/icon_post_like"></item>
    <item android:drawable="@mipmap/icon_post_unlike_night"></item>
</selector>
弄完這個,然後就監聽一下事件。這裡採用常用的onclicklister方法------setSelected為true與false是為可以顯示撤銷的方法。
 private boolean isLike = false;
mItemMatchFriendLike = (TextView) findViewById(R.id.item_match_friend_like);

        mItemMatchFriendLike.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                isList = !isList;
                if (isList) {
                    mItemMatchFriendLike.setSelected(true);
                }else {
                    mItemMatchFriendLike.setSelected(false);
                }

            }
        });
    }