android基础控件学习学习(1)【入门篇】
Android学习日志之控件学习(入门)
2012.10.14
(其余控件的使用方法见二)
一.基础控件学习
1.TextView控件
(1)设置控件基本信息设置;
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/Title"
android:textSize="25sp"//设置大小
android:textColor="@color/tvcolor"//改变字体颜色/>
*注:改变颜色有三种方法:
(1)在xml文件中用android:textColor="@color/tvcolor"改;
这种方法只能将所有字的颜色都改为同一种颜色;
(2)在MainActivity中使用如下语句改:(这种方法可以选择性该某一段的颜色)
packagecom.example.kjtest;
importandroid.os.Bundle。。。;//引用的相关包
publicclassMainActivityextendsActivity{
privateButtonbtn1,btn2;//声明button控件
privateTextViewtv;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView)findViewById(R.id.tv);
tv.setText(Html.fromHtml("这是改变<fontcolor=blue>局部字段颜色</font>的方法!"));
}}
(3)同时设置不同字段的颜色
在MainActivity中使用如下语句改:
packagecom.example.kjtest;
importandroid.os.Bundle。。。;//引用的相关包
publicclassMainActivityextendsActivity{
privateButtonbtn1,btn2;//声明button控件
privateTextViewtv;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView)findViewById(R.id.tv);
Stringstr="这是同时改变不同字段颜色的方法!";
SpannableStringBuilderstyle=newSpannableStringBuilder(str);
style.setSpan(newForegroundColorSpan(Color.RED),0,4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
style.setSpan(newForegroundColorSpan(Color.GREEN),4,8,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
style.setSpan(newForegroundColorSpan(Color.YELLOW),8,12,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
style.setSpan(newForegroundColorSpan(Color.CYAN),12,16,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(style);
/*btn1=(Button)findViewById(R.id.btn1);//查找到button1的id;
btn2=(Button)findViewById(R.id.btn2);//查找到button2的id;
btn1.setOnClickListener(clicklistener);//监听btn1;
btn2.setOnClickListener(clicklistener);//监听btn2*/
}}
(2)设置超链接
android:autoLink="web"//注:引号内可写:none,web,phone,email,map,all
分别表示不连接,连接网址,电话,邮箱,图以及上述全部链接;
(3)设置跑马灯的效果
android:focusable="true"//空间是否能获得焦点
android:ellipsize="marquee"//文字过长时该控件如何显示“start”省略显示在开头,“end”省略显示在结尾,“middle”省略显示在中间,“marquee”以跑马灯的效果显示;
android:singleLine="true"//设置文字段为单行
android:marqueeRepeatLimit="marquee_forever"//设置跑动次数,marquee_forever表示永远跑动
android:focusableInTouchMode="true"//在触摸模式下是否获得焦点
2.EditText控件
(1)去除焦点
建俩个edittext第一个的宽高都设为0dp;
(2)设置基本属性
<EditText
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLength="10"//设置最大输入字符数
android:singleLine="false"//设置是否多行输入,与android:maxLength不可以连用
android:imeOptions="number"//限制输入的信息类型,number
android:hint="请在此输入内容"//设置提示信息
android:drawableLeft="@drawable/hua"//在edittext中添加图片(图片拷贝到drawable文件夹下),可选择位置;
android:background="@drawable/shape"//设置圆角,在drawable文件夹下新建一个xml文件命名为shape(shape文件内容见备注:)
/>
备注:shape.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<shapexmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">//将形状设为矩形
<solidandroid:color="#0000FF"/>//设置填充色
<cornersandroid:radius="7sp"/>//矩形四角的半径
</shape>
3.Button控件
(2)设置控件基本信息设置;
<Button
android:id="@+id/btn"
android:text="@string/btn"//注:btn是已经在string.xml中写过的;
android:layout_width="match_parent"
android:layout_height="wrap_content">
</Button>
(2)添加事件:
方法一:(推荐使用)
在MainActivity.java代码如下:
packagecom.example.kjtest;
importandroid.os.Bundle。。。;//引用的相关包
publicclassMainActivityextendsActivity{
privateButtonbtn;//声明button控件
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.btn);//查找到button的id;
btn.setOnClickListener(newOnClickListener(){//设置监听事件以及实现
publicvoidonClick(Viewv)
{Toast.makeText(MainActivity.this,"你点击了Button!",Toast.LENGTH_LONG).show();}});
}
}
方法二:推荐当有多个button时使用
在MainActivity.java代码如下:
packagecom.example.kjtest;
importandroid.os.Bundle。。。;//引用的相关包
publicclassMainActivityextendsActivity{
privateButtonbtn1,btn2;//声明button控件
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1=(Button)findViewById(R.id.btn1);//查找到button1的id;
btn2=(Button)findViewById(R.id.btn2);//查找到button2的id;
btn1.setOnClickListener(clicklistener);//监听btn1;
btn2.setOnClickListener(clicklistener);//监听btn2
}
privateOnClickListenerclicklistener=newOnClickListener()
{publicvoidonClick(Viewv){
//TODOAuto-generatedmethodstub
Buttonbtn=(Button)v;//强制转换
switch(btn.getId())
{caseR.id.btn1:
Toast.makeText(MainActivity.this,"你点击了Button1!",Toast.LENGTH_LONG).show();
break;
caseR.id.btn2:
Toast.makeText(MainActivity.this,"你点击了Button2!",Toast.LENGTH_LONG).show();
break; }}};
}
4.radiobutton控件(单选框按钮)
(1)布局形式写法:
<RadioGroup
android:id="@+id/rad_xb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<RadioButton
android:id="@+id/rad_boy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男生"
/>
<RadioButton
android:id="@+id/rad_girl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女生"
/>
</RadioGroup>
(2)触发事件监听
packagecom.example.kjtest;
importandroid.os.Bundle。。。;//引用的相关包
publicclassMainActivityextendsActivity{
privateButtonbtn1,btn2;//声明button控件
privateTextViewtv;
privateRadioGrouprad_xb;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rad_xb=(RadioGroup)findViewById(R.id.rad_xb);
rad_xb.setOnCheckedChangeListener(newOnCheckedChangeListener()
{publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId)
{if(checkedId==R.id.rad_boy)
{Toast.makeText(MainActivity.this,"你选择了男生!",Toast.LENGTH_LONG).show();}
elseif(checkedId==R.id.rad_girl)
{Toast.makeText(MainActivity.this,"你选择了女生!",Toast.LENGTH_LONG).show();}}});}}
(3)变换选择点到信息后面
android:button="@null"//控制选择点的属性
android:drawableRight="@android :drawable/btn_radio"
以上代码添加到RadioButton属性里
注:android:drawableRight="@android :drawable/btn_(在此处按alt+?获得提示可将圆形选择点改为星形或其他)"
5.checkbox控件(复选框)
(1).布局形式:
<CheckBox
android:id="@+id/cke"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="东方"
/>
<CheckBox
android:id="@+id/ckw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="西方"
/>
<CheckBox
android:id="@+id/ckn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="北方"
/>
<CheckBox
android:id="@+id/cks"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="南方"/>
(2)事件监听:
publicclassMainActivityextendsActivity{
privateCheckBoxcke,ckw,ckn,cks;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cke=(CheckBox)findViewById(R.id.cke);//查找到button的id;
ckw=(CheckBox)findViewById(R.id.ckw);
ckn=(CheckBox)findViewById(R.id.ckn);
cks=(CheckBox)findViewById(R.id.cks);
cke.setOnCheckedChangeListener(listener);
ckw.setOnCheckedChangeListener(listener);
ckn.setOnCheckedChangeListener(listener);
cks.setOnCheckedChangeListener(listener);}
PrivateOnCheckedChangeListenerlistener=newOnCheckedChangeListener()
{publicvoidonCheckedChanged(CompoundButtonbuttonView,booleanisChecked){
if(buttonView.getId()==R.id.cke)
{if(isChecked)
{Toast.makeText(MainActivity.this,"东方!",Toast.LENGTH_LONG).show();}}
elseif(buttonView.getId()==R.id.ckw)
{if(isChecked)
{Toast.makeText(MainActivity.this,"西方!",Toast.LENGTH_LONG).show();}}
elseif(buttonView.getId()==R.id.ckn)
{if(isChecked)
{Toast.makeText(MainActivity.this,"北方!",Toast.LENGTH_LONG).show();}}
elseif(buttonView.getId()==R.id.cks)
{if(isChecked)
{Toast.makeText(MainActivity.this,"南方!",Toast.LENGTH_LONG).show();}}}};
}
6.划横线分割屏幕
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#0000FF"
/>
7.DataPickerDialog(日期控件)
(1)基本布局
<TextView
android:id="@+id/datadisplay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/changeb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="修改时间"
/>
<DatePicker
android:id="@+id/datapick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
(2)事件触发
publicclassMainActivityextendsActivity{
privateDatePickerdatePicker;
privateButtonmpickdate;
privateTextViewmdatedisplay;
privateintmyear,mmonth,mday;
staticfinalintDATE_DIALOG_ID=0;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mdatedisplay=(TextView)findViewById(R.id.datadisplay);
mpickdate=(Button)findViewById(R.id.changeb);
mpickdate.setOnClickListener(newView.OnClickListener(){
publicvoidonClick(Viewv){
showDialog(DATE_DIALOG_ID); }});
finalCalendarc=Calendar.getInstance();
myear=c.get(Calendar.YEAR);
mmonth=c.get(Calendar.MONTH);
mday=c.get(Calendar.DAY_OF_MONTH);
updateDisplay();
datePicker=(DatePicker)findViewById(R.id.datapick);
datePicker.init(myear,mmonth,mday,newOnDateChangedListener()
{
publicvoidonDateChanged(DatePickerView,intyear,intmonthofyear,intdayofmonth){ Toast.makeText(MainActivity.this,year+"-"+monthofyear+"-"+dayofmonth,Toast.LENGTH_LONG).show(); }});}
protectedDialogonCreateDialog(intid)
{switch(id)
{caseDATE_DIALOG_ID:
returnnewDatePickerDialog(this,mDateSetListener,myear,mmonth,mday);}
returnnull;}
privateDatePickerDialog.OnDateSetListenermDateSetListener=newDatePickerDialog.OnDateSetListener(){
publicvoidonDateSet(DatePickerview,intyear,intmonthOfYear,intdayOfMonth){
myear=year;
mmonth=monthOfYear;
mday=dayOfMonth;
updateDisplay();}};
privatevoidupdateDisplay()
{mdatedisplay.setText(newStringBuilder().append("时间:").append(myear).append("-").append(mmonth).append("-").append(mday)) }}
8.TimePickerDialog(时间控件)
和DatePickerDialog类似
更多相关文章
- 桌面小控件(Widget)--之清理进程
- 基于Android平台下的科学计算器
- Android底部菜单栏的实现
- Android梳理不常用widget篇
- android基本布局
- Android登陆页面软键盘弹起避免遮挡按钮实现
- Android(安卓)Studio--android:descendantFocusability用法简析
- Android横向滑动加载更多的控件的实现---HorizontalScrollSlideV
- Android(安卓)Tv ListView支持遥控器item获取焦点不能滚动的详解