Android攻城狮CheckBox&RadioGroup&AutoCompleteTextView&MultiAutoCompleteTextView&ToggleButton

给子类加构造函数Source----Generate constractor from superclass

跑马灯效果的实现(Textview 循环):

1、定义textView标签的4个属性:
 android:singleLine="true"//使其只能单行
 android:ellipsize="marquee"//去掉省略号
 android:focusable = "true"//得到焦点
 android : focusableInTouchMode = "true"
 2、若有多个跑马灯同时实现,若按上面方法只能实现第一个,因为他抢到了焦点,使得后面的无法实现。因此我们需要自定义类MarqueeText继承TextView,并且导入实现三个构造函数;
 复写isfocued方法,返回true(默认都有有焦点,平常只有一个有焦点在第一行上)
@Override
    public boolean isFocused(){
        return true;
    }
 3、使用自定义的类,方法是用包名和自定义类名代替TextView(src下的包名+类名)

//实现跑马灯的效果:

//若只有1个textview:添加4个属性在xml中就可以实现
//若有一个以上的textview,则需要创建类 MarqueeText继承TextView 
public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_main);

        
    }

    
}
//加上所有构造函数 Source----Generate constractor from superclass
//    复写isfocued方法,返回true(默认都有有焦点,平常只有一个有焦点在第一行上)
//    @Override
//        public boolean isFocused(){
//            return true;
//        }


public class MarqueeText extends TextView {

    
    
    public MarqueeText(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    public MarqueeText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
    }

    public MarqueeText(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    @Override
    public boolean isFocused() {
        // TODO Auto-generated method stub
        return true;
    }
}


AutoCompleteTextView
1.功能:
  动态匹配输入的内容,如百度搜索引擎输入文本时可以根据内容显示匹配的热门信息

2.独特属性:
  android:completionThreshold="2" --->设置输入多少字符时自动匹配

// 第一步:初始化控件
// 第二步 :ArrayAdapter适配器
//第三步:初始化数据源---去匹配文本框输入的内容
//第四步:当前控件绑定adapter


MultiAutoCompleteTextView控件:
1.功能:
  可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配,可用在发短信,发邮件时选择联系人这种类型当中。

2.独特属性:
  android:completionThreshold="2" -->设置输入多少字符时自动匹配

3.设置分隔符
  mtxt.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
// 第一步:初始化控件
// 第二步 :ArrayAdapter适配器
//第三步:初始化数据源---去匹配文本框输入的内容
//第四步:当前控件绑定adapter
//第五步:设置分隔符mtxt.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());

 1 //实现AutoCompleteTextView 和MultiAutoCompleteTextView的自动匹配
 2 
 3 public class MainActivity extends ActionBarActivity {
 4     // 第一步:初始化控件
 5     private AutoCompleteTextView actView;//只能匹配一个
 6     private MultiAutoCompleteTextView macTextView;//自动匹配多个
 7     
 8     // 第二步 :适配器
 9     private ArrayAdapter<String> adapter;
10     
11     // 第三步:初始化数据源---去匹配文本框输入的内容
12     private String[] res = { "chongqin1", "chongqin2", "shanghai1", "shanghai2" };
13     
14 
15     
16 
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         super.onCreate(savedInstanceState);
20         setContentView(R.layout.fragment_main);
21         adapter = new ArrayAdapter<String>(this,
22                 android.R.layout.simple_list_item_1, res);
23         
24         actView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
25         
26         actView.setAdapter(adapter);// 第四步:当前控件绑定adapter
27 
28         macTextView = (MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView1);
29         macTextView.setAdapter(adapter);
30         //设置以逗号为分隔符
31         macTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); 
32 
33     }
34 
35     
36 }




ToggleButton控件
: 1.什么事ToggleButton: ToggleButton有两种状态:选中和未选中状态并且需要为不同的状态设置不同的显示文本 2.ToggleButton属性: android:checked="true" android:textOff="关" andriod:textOn="开"
1.主方法实现OnCheckedChangeListener接口
2.初始化控件ToggleButton/ImageView
3.为ToggleButton对象设置监听器
4.重写onCheckedChange():
  当tb被点击的时候,当前方法会被执行
  参数buttonView---代表被点击的控件本身
  参数isChecked---代表被点击的控件的状态
  要实现的效果:当点击这个控件的时候,根据状态更换img背景。
  代码:img.setImageResource(isChecked?R.drawable.on:R.drawable.off);
//利用ToggleButton实现开关灯的效果

public class MainActivity extends ActionBarActivity implements OnCheckedChangeListener {
    private ToggleButton button;
    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_main);
        button = (ToggleButton) findViewById(R.id.toggleButton1);
        imageView = (ImageView) findViewById(R.id.imageView1);

        button.setOnCheckedChangeListener(this);

    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        // TODO Auto-generated method stub
        // buttonView----被点击控件本身
        // isChecked-----被点击控件的状态

        imageView.setBackgroundResource(isChecked ? R.drawable.on
                : R.drawable.off);
    }

}

 
CheckBox控件:复选框

1、有两种状态
   选中状态(true),未选中状态(false)

2、属性:
   android:id="@+id/checkbox"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:checked="false"
   android:text="男"
CheckBox
属性:checked(默认值false),text(选项内容)
步骤:
1、初始化;
2、设置监听器setOnCheckedChangeListener(内部类)
3、通过内部类方法OnCheckedChange()判断checkbox是否被选中;
4、利用函数getText()获取checkbox的text内容,为便于打印,使用toString()方法转化为字符串;
5、在控制台中打印日志: Log.i("tag",text);//Log.i("tag",isChecked+"");


RadioGroup和RadioButton控件:(单选)

1、RadioGroup:
   RadioButton的一个集合,提供多选一机制

2、属性:
   android:orientation={
   "vertical----->垂直排布"
   "horizontal---->水平排布"
} 
RadioButton单个使用点击后无法取消,其实就是单选框嘛 =. =!
 1 public class MainActivity extends ActionBarActivity implements android.widget.RadioGroup.OnCheckedChangeListener {
 2     private CheckBox checkBox;
 3     private RadioGroup radioGroup;
 4 
 5     @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.fragment_main);
 9         checkBox = (CheckBox) findViewById(R.id.checkBox1);
10         radioGroup = (RadioGroup) findViewById(R.id.radioGroup1);
11         
12         checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
13 
14             @Override
15             public void onCheckedChanged(CompoundButton buttonView,
16                     boolean isChecked) {
17                 // TODO Auto-generated method stub
18                 if (isChecked) {
19                     String msg = checkBox.getText().toString().trim();
20                     Log.i("tag", msg);
21                 }
22 
23             }
24         });
25 
26         radioGroup.setOnCheckedChangeListener(this);
27     }
28 
29     @Override
30     public void onCheckedChanged(RadioGroup group, int checkedId) {
31         // TODO Auto-generated method stub
32         switch (checkedId) {
33         case R.id.radio0:
34             Log.i("--->", "男");
35 
36             break;
37 
38         case R.id.radio1:
39             Log.i("--->", "女");
40             break;
41         }
42 
43     }
44 
45 }


















原文地址:https://www.cnblogs.com/my334420/p/6690651.html