Android学习之路:控件总结

最近学习了安卓中的一些控件的基础用法,在这里做一个总结。

ImageView

ImageView是安卓界面中常用的图片承载容器,有一点需要注意:在ImageView的属性中,可以分别为其设置ImageView的内容图像
即android:src=”@drawable/ic_launcher” ,也可以设置ImageView背景图片既android:background=”@drawable/ic_launcher”。

使用src设置时,图片会根据本身的分辨率正常显示,但实用background属性时,图片会填充整个控件,这是两个属性最大的不同点,但有时这个特性也会非常实用。

Button

在android界面中,有两种button:

  1. Button
  2. ImageButton

结合监听事件,这两种button都可以起到按钮的作用。不同的是,ImageButton更像是一个有ImageView功能的Button,拥有src和background属性,却没有普通button拥有的text属性。因此要想在ImageButton上显示文字,需要单独制作带文字的图片。不过这也为丰富按钮样式提供了一种思路。

提到按钮,免不了要提到监听事件。在代码的编写中,常用的实现监听的方法主要有三种:
1.匿名内部类

loginButton.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View arg0){
            System.out.println("来自匿名内部类");
        } 
    });

2.外部类

    loginButton.setOnClickListener(new MyOnClistener(){
    //OnClickListener是一个接口,只能用implements
        @Override
            public void onClick(View v) {

                super.onClick(v);
                //super,执行时不仅执行子类中的方法,也调用父类的onClick方法

                Toast.makeText(MainActivity.this , "b1要执行的逻辑" , 1).show();
            }
    });

    class MyOnClickListener implements OnClickListener{

        @Override
            public void onClick(View v) {
                Log.i("tag", "父类的onClick事件");
                //让所有实用当前外部类的点击事件的按钮都作出同一个动作

            }
    }

3.接口

public class MainActivity extends Activity implements OnClickListener {
     b3.setOnClickListener(this);
        @Override
        public void onClick(View v) {
            Log.i("tag", "第三种方式实现");
        }
}

动态自动匹配输入内容

主要是利用了AutoCompleteTextView和MultiAutoCompleteTextView,前者是单次匹配,后者可以多次匹配。

android:completionThreshold = “2” —— 设置输入2个字符时开始自动匹配
mtxt.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());设置逗号分隔符

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class MainActivity extends Activity {

    private AutoCompleteTextView acTextView;
    private String[] res = { "beijing1", "beijing2", "beijing3", "shanghai1", "shanghai2", "shanghai3" };

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

        /*
         * 第一步:初始化控件 
         * 第二步:需要一个适配器 
         * 第三步:初始化数据源---数据源去匹配文本框输入的内容
         * 第四步:将adapter与当前AutoCompleteTextView控件绑定
         */
        acTextView = (AutoCompleteTextView) 

        findViewById(R.id.autoCompleteTextView1);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, res);

        acTextView.setAdapter(adapter);
    }

}
/*
* MultiAutoCompleteTextView
* 第一步:初始化控件 
* 第二步:需要一个适配器(这里与上面用了同一个适配器)
* 第三步:初始化数据源---数据源去匹配文本框输入的内容
* 第四步:将adapter与当前MultiAutoCompleteTextView控件绑定
* 第五步:设置分隔符
*/
private MultiAutoCompleteTextView macTextView;

macTextView = (MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView1);

macTextView.setAdapter(adapter);

//设置以逗号(comma)为分隔符为结束的符号
macTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());

复选框

checkBox

        /*
         * CheckBox
         * 第一步:初始化
         * 第二步:通过设置checkBox的监听事件来判断是否被选中
         */
        cb1 = (CheckBox) findViewById(R.id.checkBox1);
        cb1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO Auto-generated method stub
                /*
                 * 通过这个匿名内部类来监听当前的checkBox是否被选中
             */
                if (isChecked){
                    //获得checkBox的文本内容
                    String text  = cb1.getText().toString();
                    Log.i("checkBox'text", text);
                }
            }
        });

一般都会设置多个checkBox以便用户可以进行多选,则需要对submit按钮设置监听setOnClickListener,在提交时统计checkBox的情况。

submit.setOnClickListener(new Button.OnClickListener()  
        {  

            @Override  
            public void onClick(View v) {  
                // TODO Auto-generated method stub  
                int num=0;  
                if(checkbox1.isChecked())  
                {  
                    num++;  
                }  
                if(checkbox2.isChecked())  
                {  
                    num++;  
                }  
                if(checkbox3.isChecked())  
                {  
                    num++;  
                }  
                if(checkbox4.isChecked())  
                {  
                    num++;  
                }  
                DisplayToast("您一共选择了"+num+"款Android手机!");  
            }  

        }); 

RadioGroup和RadioButton

在一个RadioGroup中可以包含多个RadioButton,但是用户每次只能选中一个RadioButton。利用监听事件,可以获得当前选中的radioButton。

/*
         * RadioGroup
         * 第一步:初始化
         * 第二步:实现RadioGroup的监听事件
         * 
         */
        rg = (RadioGroup) findViewById(R.id.radioGroup1);
        rg.setOnCheckedChangeListener(new android.widget.RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId) {
                case R.id.radio0:
        Log.i("tag", "当前选择:男");
                    break;
                case R.id.radio1:
                    Log.i("tag", "当前选择:女");
                    break;

                default:
                    break;
                }
            }
        });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值