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中使用如下语句改:(这种方法可以选择性该某一段的颜色)

package com.example.kjtest;

import android.os.Bundle。。。;//引用的相关包

public class MainActivity extends Activity {

    private Button btn1,btn2;//声明button控件

    private TextView tv;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        tv=(TextView)findViewById(R.id.tv);

        tv.setText(Html.fromHtml("这是改变<font color=blue>局部字段颜色</font>的方法!"));

}  }

(3)同时设置不同字段的颜色

MainActivity中使用如下语句改:

package com.example.kjtest;

import android.os.Bundle。。。;//引用的相关包

public class MainActivity extends Activity {

    private Button btn1,btn2;//声明button控件

    private TextView tv;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        tv=(TextView)findViewById(R.id.tv);

       String str="这是同时改变不同字段颜色的方法!";

       SpannableStringBuilder style=new  SpannableStringBuilder(str);

       style.setSpan(new ForegroundColorSpan(Color.RED), 0, 4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE );

       style.setSpan(new ForegroundColorSpan(Color.GREEN), 4, 8,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE );

       style.setSpan(new ForegroundColorSpan(Color.YELLOW), 8, 12,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE );

       style.setSpan(new ForegroundColorSpan(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

<?xml version="1.0" encoding="UTF-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

android:shape="rectangle">//将形状设为矩形

 <solid android:color="#0000FF"/>//设置填充色

    <corners android: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代码如下:

package com.example.kjtest;

import android.os.Bundle。。。;//引用的相关包

public class MainActivity extends Activity {

    private Button btn;//声明button控件

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        btn=(Button)findViewById(R.id.btn);//查找到button的id;

        btn.setOnClickListener(new OnClickListener(){//设置监听事件以及实现

         public void onClick(View v)

         {Toast.makeText(MainActivity.this,"你点击了Button!",Toast.LENGTH_LONG).show();}});

    }  

}

方法二:推荐当有多个button时使用

MainActivity.java代码如下:

package com.example.kjtest;

import android.os.Bundle。。。;//引用的相关包

public class MainActivity extends Activity {

    private Button btn1,btn2;//声明button控件

    @Override

    public void onCreate(Bundle savedInstanceState) {

        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

    }  

    private OnClickListener clicklistener=new OnClickListener()

    {public void onClick(View v) {

// TODO Auto-generated method stub

Button btn=(Button)v;//强制转换

switch(btn.getId())

{case R.id.btn1:

Toast.makeText(MainActivity.this,"你点击了Button1!",Toast.LENGTH_LONG).show();

break;

case R.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)触发事件监听

package com.example.kjtest;

import android.os.Bundle。。。;//引用的相关包

public class MainActivity extends Activity {

    private Button btn1,btn2;//声明button控件

    private TextView tv;

    private RadioGroup rad_xb;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        rad_xb=(RadioGroup)findViewById(R.id.rad_xb);

        rad_xb.setOnCheckedChangeListener(new OnCheckedChangeListener()

        {public void onCheckedChanged(RadioGroup group,int checkedId)

         {if(checkedId==R.id.rad_boy)

         {Toast.makeText(MainActivity.this,"你选择了男生!",Toast.LENGTH_LONG).show();}

         else if(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)事件监听:

public class MainActivity extends Activity {

  private CheckBox cke,ckw,ckn,cks;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        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);}  

    Private OnCheckedChangeListener listener=new OnCheckedChangeListener()

{public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {

if(buttonView.getId()==R.id.cke)

{if(isChecked)

{Toast.makeText(MainActivity.this,"东方!",Toast.LENGTH_LONG).show();}}

else if(buttonView.getId()==R.id.ckw)

{if(isChecked)

{Toast.makeText(MainActivity.this,"西方!",Toast.LENGTH_LONG).show();}}

else if(buttonView.getId()==R.id.ckn)

{if(isChecked)

{Toast.makeText(MainActivity.this,"北方!",Toast.LENGTH_LONG).show();}}

else if(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)事件触发

public class MainActivity extends Activity {

  private DatePicker datePicker;

  private Button mpickdate;

  private TextView mdatedisplay;

  private int myear,mmonth,mday;

  static final int DATE_DIALOG_ID=0;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        mdatedisplay=(TextView)findViewById(R.id.datadisplay);

        mpickdate=(Button)findViewById(R.id.changeb);

        mpickdate.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

showDialog(DATE_DIALOG_ID); }});

        final Calendar c=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( myearmmonthmday,new OnDateChangedListener()

        {

        public void onDateChanged(DatePicker View, int year, int monthofyear,int dayofmonth) { Toast.makeText(MainActivity.this,year+"-"+monthofyear+"-"+dayofmonth,Toast.LENGTH_LONG).show(); } });  }  

    protected Dialog onCreateDialog(int id)

    {switch(id)

     {case DATE_DIALOG_ID:

     return new DatePickerDialog(this,mDateSetListener,myear,mmonth,mday);}

     return null; }

    private DatePickerDialog.OnDateSetListener mDateSetListener=new DatePickerDialog.OnDateSetListener() {

public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {

myear=year;

mmonth=monthOfYear;

mday=dayOfMonth;

updateDisplay();}};

private void updateDisplay()

mdatedisplay.setText(new StringBuilder().append("时间:").append(myear).append("-").append(mmonth).append("-").append(mday)) }}

8.TimePickerDialog(时间控件)

DatePickerDialog类似

 

你可能感兴趣的:(android,基础控件学习)