• 热门专题

从零开始学Android之常用控件

作者:A_Mean的专栏  发布日期:2011-11-07 11:11:03
Tag标签:Android常用控件  
  • 这里介绍一些我们在开发过程中会经常使用到的控件。

     

    EditText(编辑文件的控件)

    EditText是除了TextView控件外的另一个非常重要的控件,同时该类也是TextView的子类,因此EditText拥有着TextView的一切XML属性的方法。

    二者的区别就是EditText可以输入文本,而TextView一般只用于显示文本。

    EditText的可以像一些聊天软件一样输入表情

     

    // 找到图像资源
    		Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
    				R.drawable.icon);
    		// 转为ImageSpan对象
    		ImageSpan imageSpan = new ImageSpan(bitmap);
    		String showText = "test";
    		// 实例化一个SpannableString对象,在参数里的CharSequence的值将显示在EditText上
    		SpannableString spannableString = new SpannableString(showText);
    		// 设置SpannableString的样式,第2个参数是从什么地方开始,第3个是到什么地方结束
    		spannableString.setSpan(imageSpan, 0, showText.length(),
    				SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);// 像这样显示的是从0到最后,也就是说只有图片,文字被覆盖了
    		spannableString.setSpan(imageSpan, 0, showText.length() - 2,
    				SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);// 这样的话就是从0到倒数第2位的文字被覆盖
    		((EditText) findViewById(R.id.editText1)).append(spannableString);// 最后找到这个EditText并给它追加SpannableString

    我们还可以在EditText中让用户输入我们特定的字符。

    例如只允许输入数字0-9,我们可以在XML中这样设置它的属性:

    android:digits="0123456789";或者android:inputType="number";或者android:numeric="integer"。

    以上3种方式任选一种就可实现只允许输入数字,当然同理还可以设置文字、时间、电子邮箱等。

    建议大家最好使用android:inputType来设置,这样系统自动提供的虚拟键盘也会随着允许的类型而变化。

    提到EditText,它还有一个扩展控件AutoCompleteTextView,AutoCompleteTextView可以像Google搜索框一样在编辑框下方列出可供选择的列表,

    这个控件并不复杂但很实用,这里不再作介绍。

     

    Button(普通按钮控件)

    Button控件的基本用法和TextView等控件并无太大的差异,因为它和EditText一样,也是TextView的子类。

    像一些图文混排的样式,我们同样可以通过SpannableString对象来设置,这里不作演示。

    它最常用的按钮事件是单击事件,可以通过Button类的setOnClickListener方法设置,

    也可以直接在Xml里面通过android:onClick属性指定单击事件方法。如果当前的这个Activity类还实现了onClickListener的接口,我们还可以直接

    将this传入setOnClickListener方法,代码如下:

     

    public class MusicActivity extends Activity implements OnClickListener{
    
               ..........
    
               btnStart.setOnClickListener(this);
    
               @Override
               public void onClick(View v) {
                      switch (v.getId()) {
                       case R.id.btnStart:
                            break;
                       case R.id.btnNext:
                            break;
              .........      

     ImageButton(图像按钮控件)

    ImageButton可以作为图像按钮来使用,Xml设置:android:src;代码设置:setImageResource或者其它方法。

    唯一需要注意的是,ImageButton和普通的Button不一样,ImageButton并不是TextView的子类,而是ImageView的子类,

    所以它没有android:text的属性,如果想要在ImageButton上输入文字,可以自定义一个控件继承ImageButton,并重写onDraw方法把文字画在控件上。

     

    RadioButton(选项按钮控件)

    选项按钮可用于多选一的应用中。RadioButton是Button的间接子类,android:drawableLeft等属性可以做出很好看的样式。

    对了,在开发过程中,要想使用多组RadioButton可在Xml中使用RadioGroup标签分组。

     

    ToggleButton(开关状态按钮控件)

    ToggleButton是Button的子类,但android:text属性是没用的,要在android:textOn或者android:textOff属性中修改。

     

    CheckBox(复选框控件)

    复选框用于多选的应用,CheckBox的默认情况是未选中,可在Xml中的android:checked属性或者是代码中CheckBox.setChecked方法设置。

    我们可以通过CheckBox.isChecked()方法来判断该控件是否处于选中状态。

     

    ImageView(显示图像的控件)

    ImageView控件是非常常用也非常重要的控件,它是专门用来显示和控制图像的,如放大、缩小、旋转等。

    在Xml中可以通过android:src属性来指定图像资源,android:scaleType属性来指定显示图像的方式,如

    android:scaleType="center" 表示图像以不缩放的方式显示在控件的中心

    android:scaleType="fitCenter" 表示将图像按比例缩放至合适的位置,并显示在控件的中心

    ......其它还有一些,大家可以去自己试一下。

    除了在Xml中直接设置宽高外,我们还可在代码中这样写:imageView.setLayoutParams(new LayoutParams(int width, int height));

    然后我们得到宽高:int width =imageView.getLayoutParams().width;

    关于控件图像的详细介绍,如显示指定区域的图像、缩放、旋转等,我们将在后面学习更为全面的知识。

     

    DatePicker(输入日期的控件)

    该控件可用于输入日期,输入范围是1900-1-1~2100-12-31。通过DatePicker类的init方法对控件进行初始化。

    在用户操作完成后,我们可以用DatePicker类的getYear,getMonth,getDayOfMonth方法来获得当前控件显示的年月日。

     

    TimePicker(输入时间的控件)

    该控件用来输入时间,默认是12小时进制,可以通过TimePicker类的setIs24HourView方法设置。

     

    AnalogClock和DigitalClock(显示时钟的控件)

    ActivityClock以表盘的方式显示当前时间,只有时针和分针。DigitalClock以数字方式显示当前时间。

     

    ProgressBar(进度条控件)

    ProgressBar在默认情况下是中型的圆形进度条,可通过style属性来更改:

    style="?android:attr/progressBarStyleLarge" 大型圆形

    style="?android:attr/progressBarStyleSmall" 小型圆形

    style="?android:attr/progressBarStyleHorizontal" 水平进度条

    进度条的总刻度使用android:max属性设置,它不一定就是100,可以是一个任意的合法的正整数,另外android:progress和

    android:secondaryProgress属性分别表示它的两级进度。一般这两个值应该是要小于总刻度的但,你超过了也不会报错,会显示100%的状态。

    我们还可以把进度条设置到Activity的标题栏上:

     

    super.onCreate(savedInstanceState);
    		//必须在调用setContentView方法之前设置
    		requestWindowFeature(Window.FEATURE_PROGRESS);
    		setContentView(R.layout.main);
    		//显示圆形进度条
    		setProgressBarIndeterminateVisibility(true);

    SeekBar(拖动条控件)

    SeekBar控件可以通过拖动滑杆改变当前的值,可以利用它来设置具有一定范围的变量值,例如播放器的快进快退功能等。

    它是ProgressBar的子类,基本操作可参考上面的介绍,这里只说这3个事件:

     

    SeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
    			
    			@Override
    			public void onStopTrackingTouch(SeekBar seekBar) {
    				// 拖动停止后要处理的动作
    				
    			}
    			
    			@Override
    			public void onStartTrackingTouch(SeekBar seekBar) {
    				// 拖动开始时要处理的动作
    				
    			}
    			
    			@Override
    			public void onProgressChanged(SeekBar seekBar, int progress,
    					boolean fromUser) {
    				// 滑杆位置改变后要处理的动作
    				
    			}
    		});

    我暂时碰到的一些常用控件就是这些,当然别的控件也不是说不常用了,可能以后我会再进行更新维护,如果有什么建议和看法的话,欢迎给我留言。

    下一次我们将学习一些复合控件,如ListView、GirdView等。

延伸阅读:

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规