从零开始学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, intheight));

然后我们得到宽高: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);

super.onCreate(savedInstanceState); //必须在调用setContentView方法之前设置 requestWindowFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.main); //显示水平进度条 setProgressBarVisibility(true); //设置当前进度 setProgress(1000);

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等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值