android控件布局 ToggleButton按钮 图片和文字

随笔系原创 转载请注明

欢迎访问我的博客

 

ToggleButton控件具有checked属性对于要切换状态的功能按钮来说十分好用

这里以phone的开启DTMFTwelveKeyDialer的按钮为例 展示其效果和布局

 

activity_main.xml

<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"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >

   

    <ToggleButton

           android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:background="@drawable/button_incall"

            android:drawableTop="@drawable/icon_keyboard_bg"

            android:textOn="键盘"

            android:textOff="键盘"

            android:textSize="32dip"

            android:textColor="#FFFFFF"

        />

    

    

</LinearLayout>

其中drawableTop引用了icon_keyboard_bg.xml

icon_keyboard_bg.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/icon_keyboard_up_pressed"

        />

    

    <item android:state_checked="true"

        android:drawable="@drawable/icon_keyboard_up"

        />

    

    <item android:state_checked="false"

        android:drawable="@drawable/icon_keyboard_down"

        />

    

    <item

        android:drawable="@drawable/icon_keyboard_down"

        />

</selector>

这样 即可实现点击按钮时三种不同状态图片的切换了

 

1. 自然状态下效果

android控件布局 ToggleButton按钮 图片和文字

 

2.按下按钮效果

android控件布局 ToggleButton按钮 图片和文字

 

3.属性checked="true"的效果

android控件布局 ToggleButton按钮 图片和文字

 

实际使用中应该注意国际化的问题  字符串、间距、尺寸的大小不应使用硬编码

 

还有个小问题 ==> 如何控制drawableTop的图片和文字之间的距离呢

只要使用了android:drawablePadding这个属性就可以了

例如android:drawablePadding="-10dip"就可以缩小图片和文字之间的间距了。

 

如果需要程序运行时改变ToggleButton的android:drawableTop,则可以在onCreate()方法中添加如下代码

final Drawable drawableTop = getResources().getDrawable(R.drawable.btn_bg_on);

btn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

    btn.setCompoundDrawablesWithIntrinsicBounds(null, drawableTop , null, null);

    }
});

 btn是ToggleButton的引用。

 

你可能感兴趣的:(android控件)