您的位置:首页 > 移动开发 > Android开发

android 自定义RadioButton 实现图标居中显示

2013-07-25 11:00 549 查看
源码

package com.fanli.android.view;

import com.fanli.android.apps.R;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.Gravity;
import android.widget.RadioButton;

/**
* @ClassName: MyRadioButton
* @Description: 自定义的 RadioButton
* @author xiang.shi
* @date 2013-7-25 上午10:45:15
*
*/
public class MyRadioButton extends RadioButton {
Drawable buttonDrawable;

public MyRadioButton(Context context) {
super(context);
}

public MyRadioButton(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.CompoundButton, 0, 0);
buttonDrawable = a.getDrawable(1);
setButtonDrawable(android.R.color.transparent);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (buttonDrawable != null) {
buttonDrawable.setState(getDrawableState());
final int verticalGravity = getGravity()
& Gravity.VERTICAL_GRAVITY_MASK;
final int height = buttonDrawable.getIntrinsicHeight();
int y = 0;
switch (verticalGravity) {
case Gravity.BOTTOM:
y = getHeight() - height;
break;
case Gravity.CENTER_VERTICAL:
y = (getHeight() - height) / 2;
break;
}
int buttonWidth = buttonDrawable.getIntrinsicWidth();
int buttonLeft = (getWidth() - buttonWidth) / 2;
buttonDrawable.setBounds(buttonLeft, y, buttonLeft + buttonWidth, y
+ height);
buttonDrawable.draw(canvas);
}
}
}在布局文件中
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:orientation="horizontal" >

<com.example.viewpagedemo.MyRadioButton
android:id="@+id/radio0"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:button="@drawable/home_press"
android:layout_weight="1"
android:checked="true"
android:text="" />

<com.example.viewpagedemo.MyRadioButton
android:id="@+id/radio1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:button="@drawable/home_press"
android:layout_weight="1"
android:text="" />

<com.example.viewpagedemo.MyRadioButton
android:id="@+id/radio2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:button="@drawable/home_press"
android:layout_weight="1"
android:text="" />
</RadioGroup>
setButtonDrawable(android.R.color.transparent);3.0以上必须用这个 3.0以下可用
android.R.id.empty

代替
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: