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类似

更多相关文章

  1. 桌面小控件(Widget)--之清理进程
  2. 基于Android平台下的科学计算器
  3. Android底部菜单栏的实现
  4. Android梳理不常用widget篇
  5. android基本布局
  6. Android登陆页面软键盘弹起避免遮挡按钮实现
  7. Android(安卓)Studio--android:descendantFocusability用法简析
  8. Android横向滑动加载更多的控件的实现---HorizontalScrollSlideV
  9. Android(安卓)Tv ListView支持遥控器item获取焦点不能滚动的详解

随机推荐

  1. Android参数设置父布局集体宽高
  2. Android自定义Dialog
  3. Android(安卓)基于GeolocationAPI的基站
  4. Android之Style
  5. android 关闭和打开Speaker
  6. android > intent > 自动跳转到 系统 设
  7. Android(安卓)Phone模块 三
  8. 短信拦截
  9. 类似股票的实时动态折线图
  10. Android(安卓)day_10-02 (广播接收者的使