Android中重写RadioButton的有关问题
Android中重写RadioButton的问题
自定义控件代码如下:
package com.gdseed.train;
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.RadioButton;
public class MyRadioButton extends RadioButton {
public MyRadioButton(Context context) {
super(context);
}
public MyRadioButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean isChecked() {
return super.isChecked();
}
@Override
public void setButtonDrawable(int resid) {
super.setButtonDrawable(resid);
}
@Override
protected void onDraw(Canvas canvas) {
if (isChecked()) {
super.setButtonDrawable(R.drawable.rg2);
} else {
super.setButtonDrawable(R.drawable.rg1);
}
super.onDraw(canvas);
}
}
布局文件中的代码:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginLeft="5dp"
android:paddingTop="20dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:background="#F1F1F1">
<TextView
android:id="@+id/textViewD5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tip_con_pitch"
android:layout_marginLeft="10dp"
android:textSize="6sp" />
<RadioGroup
android:id="@+id/radioGroupPitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/textViewD5"
android:orientation="horizontal" >
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_con3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:text="@string/pitch_con_0.3"
android:textSize="6sp"/>
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_con4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/pitch_con_0.4"
android:textSize="6sp"/>
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_con5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pitch_con_0.5"
android:textSize="6sp"/>
</RadioGroup>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/radioGroupPitch"
android:text="@string/tip_con_type"
android:textSize="6sp" />
<RadioGroup
android:id="@+id/radioGroupConType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/radioGroupPitch"
android:layout_toRightOf="@+id/textView2"
android:orientation="horizontal" >
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_btb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/con_type_btb"
android:textSize="6sp"/>
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_zif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/con_type_zif"
android:textSize="6sp"/>
</RadioGroup>
<TextView
android:id="@+id/textView_pincount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/radioGroupConType"
android:text="@string/tip_pin_count"
android:textSize="6sp" />
<RadioGroup
android:id="@+id/radioPinCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/radioGroupConType"
android:layout_toRightOf="@+id/textView_pincount"
android:orientation="horizontal" >
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_pin32"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/pin_32"
android:textSize="6sp"/>
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_pin30"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pin_30"
android:textSize="6sp"/>
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_pin26"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pin_26"
android:textSize="6sp"/>
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_pin24"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pin_24"
android:textSize="6sp"/>
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_pin20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pin_20"
android:textSize="6sp"/>
</RadioGroup>
<RadioGroup
android:id="@+id/radioPinCount2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/textView_pincount"
android:layout_below="@+id/radioPinCount"
android:orientation="horizontal" >
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_pin33"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:text="@string/pin_33"
android:textSize="6sp"/>
</RadioGroup>
<Button
android:id="@+id/button_picture"
android:layout_width="60dp"
android:layout_height="30dp"
android:layout_marginLeft="70dp"
android:layout_below="@+id/radioPinCount2"
android:text="@string/str_button_picture"
android:textSize="8sp" />
<Button
android:id="@+id/button_set_dir"
android:layout_width="60dp"
android:layout_height="30dp"
android:layout_below="@+id/radioPinCount2"
android:layout_toRightOf="@+id/button_picture"
android:text="@string/str_button_set_dir"
android:textSize="8sp" />
</RelativeLayout>
Activity中尚未配置!
当运行之后不知道为什么开始的时候各个自定义单选按钮之间的距离显得有些大,过了几秒后各个按钮右紧凑在了一起!还有更重要的问题,如果最后两个按钮的位置和自定义单选按钮组有关的话,就会报错,我估计和自定义单选按钮间距离变化有关,但不知道为什么,下面是截图:
⑴这是开始运行的时候:

⑵这是过了几秒后的样子(已经把button和radiogroup位置关系去掉了,否则就会报错):

请问各位大神这是怎么回事,有什么解决办法?
------解决思路----------------------
debug看看,报啥错误
自定义控件代码如下:
package com.gdseed.train;
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.RadioButton;
public class MyRadioButton extends RadioButton {
public MyRadioButton(Context context) {
super(context);
}
public MyRadioButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean isChecked() {
return super.isChecked();
}
@Override
public void setButtonDrawable(int resid) {
super.setButtonDrawable(resid);
}
@Override
protected void onDraw(Canvas canvas) {
if (isChecked()) {
super.setButtonDrawable(R.drawable.rg2);
} else {
super.setButtonDrawable(R.drawable.rg1);
}
super.onDraw(canvas);
}
}
布局文件中的代码:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginLeft="5dp"
android:paddingTop="20dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:background="#F1F1F1">
<TextView
android:id="@+id/textViewD5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tip_con_pitch"
android:layout_marginLeft="10dp"
android:textSize="6sp" />
<RadioGroup
android:id="@+id/radioGroupPitch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/textViewD5"
android:orientation="horizontal" >
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_con3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:text="@string/pitch_con_0.3"
android:textSize="6sp"/>
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_con4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/pitch_con_0.4"
android:textSize="6sp"/>
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_con5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pitch_con_0.5"
android:textSize="6sp"/>
</RadioGroup>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/radioGroupPitch"
android:text="@string/tip_con_type"
android:textSize="6sp" />
<RadioGroup
android:id="@+id/radioGroupConType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/radioGroupPitch"
android:layout_toRightOf="@+id/textView2"
android:orientation="horizontal" >
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_btb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/con_type_btb"
android:textSize="6sp"/>
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_zif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/con_type_zif"
android:textSize="6sp"/>
</RadioGroup>
<TextView
android:id="@+id/textView_pincount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/radioGroupConType"
android:text="@string/tip_pin_count"
android:textSize="6sp" />
<RadioGroup
android:id="@+id/radioPinCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/radioGroupConType"
android:layout_toRightOf="@+id/textView_pincount"
android:orientation="horizontal" >
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_pin32"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/pin_32"
android:textSize="6sp"/>
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_pin30"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pin_30"
android:textSize="6sp"/>
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_pin26"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pin_26"
android:textSize="6sp"/>
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_pin24"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pin_24"
android:textSize="6sp"/>
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_pin20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pin_20"
android:textSize="6sp"/>
</RadioGroup>
<RadioGroup
android:id="@+id/radioPinCount2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/textView_pincount"
android:layout_below="@+id/radioPinCount"
android:orientation="horizontal" >
<com.gdseed.canvastestboard.MyRadioButton
android:id="@+id/radio_pin33"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:enabled="false"
android:text="@string/pin_33"
android:textSize="6sp"/>
</RadioGroup>
<Button
android:id="@+id/button_picture"
android:layout_width="60dp"
android:layout_height="30dp"
android:layout_marginLeft="70dp"
android:layout_below="@+id/radioPinCount2"
android:text="@string/str_button_picture"
android:textSize="8sp" />
<Button
android:id="@+id/button_set_dir"
android:layout_width="60dp"
android:layout_height="30dp"
android:layout_below="@+id/radioPinCount2"
android:layout_toRightOf="@+id/button_picture"
android:text="@string/str_button_set_dir"
android:textSize="8sp" />
</RelativeLayout>
Activity中尚未配置!
当运行之后不知道为什么开始的时候各个自定义单选按钮之间的距离显得有些大,过了几秒后各个按钮右紧凑在了一起!还有更重要的问题,如果最后两个按钮的位置和自定义单选按钮组有关的话,就会报错,我估计和自定义单选按钮间距离变化有关,但不知道为什么,下面是截图:
⑴这是开始运行的时候:
⑵这是过了几秒后的样子(已经把button和radiogroup位置关系去掉了,否则就会报错):
请问各位大神这是怎么回事,有什么解决办法?
------解决思路----------------------
debug看看,报啥错误