Android常用控件总结

Notepad++编写  可以负责粘贴到其中去 看得更清楚。(内容包括了Android中的大部分常用控件及其事件的监听)
第一章
 1.1  Android中src文件夹包含项目的所有包及其资源文件,res文件夹包含了项目中所有的资源。比如:程序图标(drawable),布局文件(layout),常量(value),音频文件(raw)
    R.java是在创建项目是自动生成的只读文件,不可更改此文件。R文件其作用:是定义项目中所有资源的索引文件。
 
 1.2  AndroidManfest.xml 如下:
   
   
        xmlns:android="http://schemas.android.com/apk/res/android" //包命名空间的声明,使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据
    package="Android.Summary"         //引用程序包名
    android:versionCode="1"
    android:versionName="1.0">
          //使用SDK版本号


        android:icon="@drawable/icon"         //应用程序图标
    android:label="@string/app_name">       //应用程序名字
             android:label="@string/app_name">
    /           //描述了Activity的启动时间和位置,另外为了支持查找Activity可以包含一个或多个
                 //acton 为组件支持的Intent action
                //categor 为组件支持的Intent category 这里指定了引用程序的默认启动的Activity
   

   

      //在此对新增的Activity进行注册。如果在不同的包中注意声明是将包名带上
   

   

   
 1.3  String.xml如下:
   
                 //此处定义了两个字符串资源,即定义了app_name,hello常量
    Hello World, SummaryActivity!
    Summary
   

   如何使用这个资源呢?如下:
   Resources r = this.getContext().getResources();     //通过Context的getResource()实例化一个Resources对象
   String app_name = ((String)r.getString(R.string.app_name));  //然后通过getString()方法取得指定的索引的字符串。项目中所有常量都可以在String.xml文件中定义
   String hello = ((String)r.getString(R.string.hello));
 
 1.4  main.xml如下:
   
        android:orientation="vertical"        //版面配置的方式。此为自上到下为垂直配置,"horizontal"为水平配置
    android:layout_width="fill_parent"       //定义当前视图在屏幕上所占的宽度,"fill_parent"为填充整个屏幕宽度
    /*android:layout_weight="50"*/         //用于给一个布局中多个视图的重要度赋值
    android:layout_height="fill_parent"       //定义当前视图在屏幕上所占的高度,...........................高度
    > 
        android:layout_width="fill_parent" 
    android:layout_height="wrap_content"       //随着视图的栏位的不同而改变这个视图的高度或宽度
    android:text="@string/hello"        //在视图上显示的内容,此处引用了@String中的hello字符串
    />
   



 1.5  src下的java 如下:
   package Android.Summary;


   import android.app.Activity;
   import android.os.Bundle;


   public class SummaryActivity extends Activity {     //继承自Activity
    /** Called when the activity is first created. */
   @Override
    public void onCreate(Bundle savedInstanceState){   //重写onCreate()方法
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);      //设置要显示的布局
    }
   }
 
第二章
 2.1  Android应用程序由四个模块组成:Activity,Service,Intent,ContentProvider(注意:一个应用程序不一定包含全部的四个模块).
   在使用时必须在AandroidManfest中进行声明。
    Activity可以理解为用户看到屏幕,主要用于处理应用程序的整体性工作。如:
     a.监听系统事件,触屏事件,为用户显示指定的View,启动其他Activity等。
     b.所有应用的Activity都继承于android.app.Activity,该类是Android提供的基层类。
     c.一个Activity通常就是一个单独的屏幕。
     d.每一个活动都被实现为一个独立的类。
     e.大多数的应用程序都是由多个Activity组成。
    
     Intent Aandroid中主要用Intent类实现从一个Activity跳转到另一个Activity。在Intent的描述结构中,有两个重要的部分:动作和对应的数据。
     典型的动作有MAIN,VIEW,PICK,EDIT.而动作对应的数据则以URI的形式表示。例如:要查一个人的联系方式,需要创建一个动作类型View的Intent
     ,以及一个表示这个人的URI.
     Intent的使用:
     button1.setOnClickListener(new Button.OnClickListener(){
      public void onClick(View v){
        Intent intent = new Intent();   //创建一个Intent对象
        intent.setClass(Activity01.this,Activity02.class);//指明要启动的另一Activity02
        startActivity(intent);     //启动一个新的Activity
        Activity01.this.finish();    //关闭当前Activity01
      }
     });
     这里需要注意在Android中对新启动的Activity进行声明。声明方式:
       //注意:如果在不同的包中在声明是还要加上包名
     
     IntentReceiver                                 
      如果希望Android应用能够对外部事件(如电话打入时,数据网络可用时,)做出响应,可用使用IntentReceiver.虽然IntentReceiver在如上事件发生
     时会使用NotificationManager通知用户,但它并不能生产UI。IntentReceiver可以在AndroidManifest.xml中注册,也可在代码中使用Context.registerReceiver
     进行注册。当IntentReceiver被触发时,系统会在需要的时候启动应用。各种应用还可以通过ContentReceiver()将他们自己的IntentReceiver广播出去。   ???????
 
    Content Provider
     作用:主要用于不同应用程序中的数据的传递。
       Content Provider 是一个特殊的存储数据的类型。
       Android自身提供现成的Content Provider:Contacts ,Browser,CallLog,Settings,MediaStore
       应用可用通过唯一的ContentResolver界面来使用具体的Conten Provider,然后可以用ContentResolver提供的方法来使用你需要的Content Provider
      其中,ContentResolver提供的方法有query(),insert(),update()等。
       URI----String形式的Content Provider的完整路径。
     
     下面这个这个例子通过ContentProvider获取电话本中的数据,然后显示到TextView中去。
     public class Activity01 extends Activity{
      public void onCreate(Bundle savedInstanceState){
       TextView textView = new TextView(this);//得到TextView对象
       String string = "";
       super.onCreate(savedInstanceState);
       
       ContentResolver resolver = getContentResolver();//得到ContentResolver对象
       Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);//取得电话本中开始一项的光标,通过query方法查询出符合标准的电话本记录
        //向下移动光标
        while(cursor.moveToNext()){
        //取得联系人名字
        int name_index = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
        String name = cursor.getString(name_index);
        //取得电话号码
        int number_index = cursor.getColumnIndex(PhoneLookup.NUMBER);
        String number = cursor.getString(number_index);
        
        string +=(name+":"+number+"\n");
        }
        cursor.close();
        textView.setText(string);//设置TextView显示的内容
        setContentView(textView);//显示到屏幕上 其实TextView也是View的一种
       }
      }
     注意:在使用这些模块中用到了读取联系人的API,所以必须在AndroidManifest.xml中声明
      声明方式为:
                android:name="android.permission.READ_CONTACTS">
       
 
    Service 后台服务,没有界面
     启动service方法:
      a.Context.startService()
      b.Context.bindService()//与上一种方法不同处 如果这个Service没有处于启动状态,则将其启动
     
     下面这个例子以Activity中的俩个控件来控制播放一首Mp3. (例中:需要在res文件夹中创建一个raw文件夹 然后放入一首MP3)
    
     public class Activity01 extends Activity{
      public void onCreate(Bundle savedInstanceState){
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
  
      //从main.xml布局中获得Button对象
      Button button_start = (Button)findViewById(R.id.start);
      Button button_stop = (Button)findViewById(R.id.stop);
      //设置按钮(Button)监听
      button_start.setOnClickListener(start);
      button_stop.setOnClickListener(stop);
      }
       //开始按钮
      private OnClickListener start = new OnClickListener(){
       public void onClick(View v){   
       //开启Service
       startService(new Intent("com.yarin.Android.MUSIC"));
       }
      };
       //停止按钮
      private OnClickListener stop = new OnClickListener(){
       public void onClick(View v){
       //停止Service
       stopService(new Intent("com.yarin.Android.MUSIC"));       
       }
      };
      } 
 
     public class MusicService extends Service{
      //MediaPlayer对象
      private MediaPlayer player;


      public IBinder onBind(Intent arg0){
       return null;
       }
      public void onStart(Intent intent, int startId){
       super.onStart(intent, startId);
       //这里可以理解为装载音乐文件
       player = MediaPlayer.create(this, R.raw.test);
       //开始播放
       player.start();
       }


      public void onDestroy(){
       super.onDestroy();
       //停止音乐-停止Service
       player.stop();
       }
      }
     
     AndroidManifest.xml文件中
     
     
       
       
     

     

     
 2.2  Aandrod的生命周期  
     public class Activity02 extends Activity{
      private static final String TAG = "Activity02";
 
      public void onCreate(Bundle savedInstanceState){
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main2);
       Log.v(TAG, "onCreate");
      }
      public void onStart(){
       super.onStart();
       Log.v(TAG, "onStart");
      }
      public void onResume(){
       super.onResume();
       Log.v(TAG, "onResume");
      }
      public void onPause(){
       super.onPause();
       Log.v(TAG, "onPause");
      } 
      public void onStop(){
       super.onStop();
       Log.v(TAG, "onStop");
      }
      public void onDestroy(){
       super.onDestroy();
       Log.v(TAG, "onDestroy");
      }
      public void onRestart(){
       super.onRestart();
       Log.v(TAG, "onReStart");
      }
     }
    这些方法都是系统自动调用的。
 
第三章
 3.1  事件处理 
   * 控件事件通过设置其控件的监听器来监听并处理事件
   * 按键按下事件:通过重写onKeyDown方法
   * 按键弹起事件:通过重写onKeyUp方法
   * 触笔点击事件:通过实现onTouchEvent方法
   * 示例中使用了Toast控件:
    * Toast.makeText(this, string, Toast.LENGTH_SHORT).show();


     public class Activity01 extends Activity{


      public void onCreate(Bundle savedInstanceState){
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.main);
      //获得Button对象
      Button button_ok = (Button) findViewById(R.id.ok);
      
      button_ok.setOnClickListener(new Button.OnClickListener() {-------------------------------------------------------//设置Button控件监听器
       public void onClick(View v){
      //这里处理事件
        DisplayToast("点击了OK按钮");
        }
       });
      }


      /* 按键按下所触发的事件 */
      public boolean onKeyDown(int keyCode, KeyEvent event){
       switch (keyCode){
        case KeyEvent.KEYCODE_DPAD_CENTER:
         DisplayToast("按下:中键");
         break;
        case KeyEvent.KEYCODE_DPAD_UP:
         DisplayToast("按下:上方向键");
         break;
        case KeyEvent.KEYCODE_DPAD_DOWN:
         DisplayToast("按下:下方向键");
         break;
        case KeyEvent.KEYCODE_DPAD_LEFT:
         DisplayToast("按下:左方向键");
         break;
        case KeyEvent.KEYCODE_DPAD_RIGHT:
         DisplayToast("按下:右方向键");
         break;
        }
       return super.onKeyDown(keyCode, event);
       }
      /* 按键弹起所触发的事件 */
      public boolean onKeyUp(int keyCode, KeyEvent event){
       switch (keyCode){
        case KeyEvent.KEYCODE_DPAD_CENTER:
         DisplayToast("弹起:中键");
         break;
        case KeyEvent.KEYCODE_DPAD_UP:
         DisplayToast("弹起:上方向键");
         break;
        case KeyEvent.KEYCODE_DPAD_DOWN:
         DisplayToast("弹起:下方向键");
         break;
        case KeyEvent.KEYCODE_DPAD_LEFT:
         DisplayToast("弹起:左方向键");
         break;
        case KeyEvent.KEYCODE_DPAD_RIGHT:
         DisplayToast("弹起:右方向键");
         break;
        }  
       return super.onKeyUp(keyCode, event);
       }
      //用于响应按键重复点击,官方API指出onKeyMultiple方法总是返回false,即它没有handle,因此必须重写才能实现-------------------此方法没用过具体情况怎么样不是很清楚?
      public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event){
  
       return super.onKeyMultiple(keyCode, repeatCount, event);
       }
 
      /* 触笔事件 */
      public boolean onTouchEvent(MotionEvent event){
       int iAction = event.getAction();  //利用getAction得到所执行的动作
       if (iAction == MotionEvent.ACTION_CANCEL || 
         iAction == MotionEvent.ACTION_DOWN || 
          iAction == MotionEvent.ACTION_MOVE){
        return false;
        }
      //得到触笔点击的位置
       int x = (int) event.getX();
       int y = (int) event.getY();
                //将获得的坐标转成String类型的方法
        DisplayToast("触笔点击坐标:("+Integer.toString(x)+","+Integer.toString(y)+")");
                
       return super.onTouchEvent(event);
      }
 
      /* 显示Toast  */
      public void DisplayToast(String str){
       Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
       }
      }
   我们分析了一些常用事件处理方式。每一个键都对应一个键值。当然也可根据需要来改变一些键的功能,需要我们自己构建KeyEvent对象------------------有待进一步学习
   构造KeyEvent对象的几种方法:
       KeyEvent(int action,int code);
    KeyEvent(long DownTime,long EventTime,int action,int code,int repeat);
    KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState);
    KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState,int device,int scancode);
    KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState,int device,int scancode,int flags);
    KeyEvent(KeyEvent origEvent,long EventTime,int newRepart);
     例:
     public class Activity01 extends Activity{
      public void onCreate(Bundle savedInstanceState){
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
      }
      public boolean onKeyDown(int keyCode, KeyEvent event){
       //这里构建KeyEvent对象,其功能为返回键的功能
       //因此我们按任意键都会执行返回键功能
      KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);


       //这里传入的参数就是我们自己构建的KeyEvent对象key
      return super.onKeyDown(key.getKeyCode(), key);
      }
     }
 3.2  常用控件
   Button
    xml设计
     
      
    代码设计 Button button = new Button(this);
       button.setText("我是Button");
       button.setWidth(123);  //设置宽度
       button.setHeight(123); //设置高度
       button.setTextColor(Color.BLUE); //设置文字颜色
       button.setTextSize(123);   //设置字体大小
       button.setBackgroundColor(Color.BLUE);  //设置控件背景色
    
    监听器     
      button.setOnClickListener(new Button.OnClickListener(){//设置按钮的事件监听
       public void onClick(View v){
       //处理按钮事件产生一个Toast.利用button.getText()得到按钮显示的内容
       Toast toast = Toast.makeText(Activity01.this, "你点击了“"+button.getText()+"”按钮!", Toast.LENGTH_LONG);
       //设置toast显示的位置
       toast.setGravity(Gravity.TOP, 0, 150);
       //显示该Toast
       toast.show();
       }
      });
   -----------------------------------------------------------------------------------------------------------------------------
   TextView 一个用来显示文本的控件
    xml设计        android:id= "@+id/textView"       //设置id
       android:layout_width ="fill_parent"  //宽度充满全屏
       android:layout_height="wrap_content" //高度随控件变化
       android:layout_height="2dip"
       android:textColor=""
       android:background="#aaa00" //背景颜色
       android:text="你好"/>
       android:paddingLeft="50px"
       android:paddingTop="5px"
       android:paddingBottom="5px"
       android:textSize="30sp"
       android:singleLine="true"
       android:layout_below="@id/imageView_handler"//在什么下
       android:gravity ="left"  //用于设置View中内容相对于View组件的对齐方式,
       android:layout_gravity//用于设置View组件相对于Container的对齐方式。
       android:paddingLeft="30px" // 按钮上设置的内容离按钮左边边界30个像素
       android:layout_marginLeft="30px"  //整个按钮离左边设置的内容30个像素
       android:layout_weight="1"//控件权重 即占的比例 默认值为0
       android:gravity="center_horizontal"//水平居中
       android:padding="3dip"
       
       
    
    代码设计 TextView textView = new TextView(this); //声明对象 
       textView.setTextColor(Color.RED);  //设置字体颜色
       textView.setTextSize(20);    //设置字体大小
       textView.setBackgroundColor(Color.BLUE);//控件背景色
       textView.setText("你好")    //显示的文字
       textView.setHeight
       textView.setWidth
       textView.setVisibility(GONE/VISIBLE); //设置为不可见/可见
       textView.setGravity(Gravity.CENTER);//设置文字权重
       
 
    监听器 TextView textView = new TextView(this);  //得到对象
      textview.setOnClickListener(new TextView.OnClickListener(){-------------------------------------------TextView监听器
       public void onClick(View v){
       }
      });
   -------------------------------------------------------------------------------------------------------------------------------
   ImageButton 带图标的按钮
    xml设计
             android:id= "@+id/imageButton1"
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"
       android:src="@drawable/qq"   //在xml设计所使用的图片
      />
      
    代码中设计
      imageButton.setImageDrawable(getResources().getDrawable(R.drawable.image2));//在代码中设计使用的图片(得到对象后)
      
    监听器
      imageButton.setOnClickListener(new Button.OnClickListener() {---------------------------------------------ImageButton监听器
   
       @Override
       public void onClick(View v) {
        //创建对话框
        Dialog dialog = new AlertDialog.Builder(ImageButton_Dialog.this)
         .setTitle("ImageButton2")
         .setMessage("跳转到系统图片")
         .setPositiveButton("确定", new DialogInterface.OnClickListener() {     
          @Override
          public void onClick(DialogInterface dialog, int which) {
          // TODO Auto-generated method stub
          imageButton2.setImageDrawable(getResources().getDrawable(android.R.drawable.sym_action_call));
          }
         }).create();
         dialog.show();
       }
      });
   -------------------------------------------------------------------------------------------------------------------------------
   EditText 
    xml设计
             android:id="@+id/editText"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:textSize="18sp" 
       android:layout_x="29px"
       android:layout_y="33px"
       android:hint="请输入账号" //设置当m_EditText中为空时提示的内容 
       />
       
    代码设计 EditText editText = new EditText(this);//得到EditText对象
       editText.setTextSize(20);  //设置字体大小
       editText.setHint("请输入账号");  //设置当m_EditText中为空时提示的内容 
    监听器 
      editText.setOnKeyListener(new EditText.OnKeyListener(){-----------------------------------------EditText监听器
       @Override
       public boolean onKey(View arg0, int arg1, KeyEvent arg2){
    
        // 得到文字,将其显示到TextView中
        m_TextView.setText("文本框中内容是:" + m_EditText.getText().toString());
        return false;
       }
      });
   -----------------------------------------------------------------------------------------------------------------
   CheckBox 多项选择 需要对没有按钮设置监听器
    xml设计
            android:id="@+id/checkBox"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/CheckBox4"
     >
    监听器     
     checkBox1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() {//对每个选项设置事件监听-------------------CheckBox监听器
     @Override
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){
       if(m_CheckBox1.isChecked()){
         DisplayToast("你选择了:"+m_CheckBox1.getText());
       }
      }
     });
   -------------------------------------------------------------------------------------------------------------------
   Spinner 下拉列表
    下面一个例子将可选内容通过ArrayAdapter和下拉列表连接起来。设置监听器 通过setVisibility方法设置当前显示项
    main.xml
     
            android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      >
             android:id="@+id/TextView1"
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="@string/hello"
      />
             android:id="@+id/Spinner1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerHorizontal="true"
      />
     



     public class Activity01 extends Activity{
      private static final String[] string = { "O型", "A型", "B型", "AB型", "其他" };


      private TextView    m_TextView;
      private Spinner     m_Spinner;
      private ArrayAdapter adapter;


      @Override
      public void onCreate(Bundle savedInstanceState){
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);


       m_TextView = (TextView) findViewById(R.id.TextView1);
       m_Spinner = (Spinner) findViewById(R.id.Spinner1);


       //将可选内容与ArrayAdapter连接
       adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, string);


       //设置下拉列表的风格
       adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
  
       //将adapter添加到m_Spinner中
       m_Spinner.setAdapter(adapter);


       //添加Spinner事件监听
       m_Spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {--------------------------Spinner监听器


        @Override
         public void onItemSelected(AdapterView arg0, View arg1, int arg2, long arg3){
         m_TextView.setText("你的血型是:" + string[arg2]);
         //设置显示当前选择的项
         arg0.setVisibility(View.VISIBLE);
         }


        @Override
        public void onNothingSelected(AdapterView arg0){
         // TODO Auto-generated method stub
         }
        );
       }
      }
     }
   ------------------------------------------------------------------------------------------------------
   RadioGroup , RadioButton 单选选择控件
    一个单选选择由两部分组成,分别是前面的选择按钮和后面的内容。按钮通过RadioButton来实现,答案通过RadioGroup来实现
   如果确定是选择哪一项那就要设置监听器setOnCheckedChangeListener.
    下面有一例子:本例中使用到了String.xml文件来定义常量。
   string.xml
   
     
      Android底层是基于什么操作系统?
      Examples_04_07
      Windows
      Linux
      Moc os
      Java
     

   
   main.xml
   
         android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     >
            android:id="@+id/TextView01"
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/hello"
     />
            android:id="@+id/RadioGroup01"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:orientation="vertical"
      android:layout_x="3px"
      android:layout_y="54px" 
      >
             android:id="@+id/RadioButton1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/RadioButton1"
      />
             android:id="@+id/RadioButton2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/RadioButton2"
      />
             android:id="@+id/RadioButton3"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/RadioButton3"
      />
             android:id="@+id/RadioButton4"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/RadioButton4"
      />
     
   
   

   
    public class Activity01 extends Activity{
     TextView  m_TextView;
     RadioGroup  m_RadioGroup;
     RadioButton  m_Radio1, m_Radio2, m_Radio3, m_Radio4;


     @Override
     public void onCreate(Bundle savedInstanceState){
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);


      m_RadioGroup = (RadioGroup) findViewById(R.id.RadioGroup01);//获得RadioGroup对象
      m_Radio1 = (RadioButton) findViewById(R.id.RadioButton1);//获得4个RadioButton对象
      m_Radio2 = (RadioButton) findViewById(R.id.RadioButton2);
      m_Radio3 = (RadioButton) findViewById(R.id.RadioButton3);
      m_Radio4 = (RadioButton) findViewById(R.id.RadioButton4);


     /* 设置事件监听  */
     m_RadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {---------------------------RadioGroup监听器
      @Override
      public void onCheckedChanged(RadioGroup group, int checkedId){
    
       if (checkedId == m_Radio2.getId()){
        DisplayToast("正确答案:" + m_Radio2.getText() + ",恭喜你,回答正确!");
       }else{
        DisplayToast("请注意,回答错误!");
        }
       }
      });
     } 
     public void DisplayToast(String str)//显示Toast{
      Toast toast = Toast.makeText(this, str, Toast.LENGTH_LONG);
       //设置toast显示的位置
       toast.setGravity(Gravity.TOP, 0, 220);
       //显示该Toast
       toast.show();
     }
    }
   -----------------------------------------------------------------------------------------------------------
   AutoCompletTextView 和 MultiAutoCompleteTextView 作用:自动提示   下面例中用到了ArrayAdapter
   autoCompletTextView.xml
   
         android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     >
            android:id= "@+id/autoCompleteTextView"
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
     />
            android:id= "@+id/multiAutoCompleteTextView"
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
     />
   

    
   //如何实现如果输入的字符不在其范围内的也能得到提示  是继承TextWatcher?
    public class Control_Auto extends Activity {
       //implements TextWatcher{}
     public TextView textView_auto;
     
     private static final String[] string ={"ni hao","ni hao ","ni hao ma","ni zheng de hao ma","nshis"};
 
     public void onCreate(Bundle savedInstanceState){
      super.onCreate(savedInstanceState);  
      setContentView(R.layout.autocompletetextview);
      
       //将可选内容与适配器ArrayAdapter连接
      ArrayAdapter adapter= new ArrayAdapter(this,android.R.layout.simple_dropdown_item_1line,string);
      
      MultiAutoCompleteTextView multiAutoCompletTextView = (MultiAutoCompleteTextView)findViewById(R.id.multiAutoCompleteTextView);
      AutoCompleteTextView autoCompleteTextView =(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView);
                  
      autoCompleteTextView.setAdapter(adapter); //将adapter添加到AutoCompletTextView中去 
      multiAutoCompletTextView.setAdapter(adapter); //将adapter添加到MultAutoCompleteTextView中去
      
      multiAutoCompletTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
     }
    }
                      
    /*   //autoCompleteTextView.addTextChangedListener(this);---此为设置监听?
    * 例子中没有涉及到的属性(可在布局文件中设置):
    AutoCompleteTextView是EditText的子类,所以你可以对它的对象进行诸如外观/字体/颜色等属性值的设置。
     completionThreshold:它的值决定了你在AutoCompleteTextView至少输入几个字符,它才会具有自动提示的功能。另,默认最多提示20条。
     dropDownAnchor:它的值是一个View的ID,指定后,AutoCompleteTextView会在这个View下弹出自动提示。
     dropDownSelector:应该是设置自动提示的背景色之类的。
     dropDownWidth:设置自动提示列表的宽度。
    你可以通过setAdapter()来给AutoCompleteTextView添加一个包含候选值列表的适配器(adapter)。--------此处没实现过?
    然而,由于用户可以输入一些不在候选值列表的数据,AutoCompleteTextView不支
    持selection listener。不过,你可以注册一个TextWacther用于当用户输入文本发生变化时发出通知。
   ----------------------------------------------------------------------------------------------------------------------
   DatePicker,TimePicker 日期和时间
    下例中首先需要在布局文件中定义DatePicker和TimePicker,然后通过Canlendar类获得系统时间,接着通过init方法将日期传给DatePicker,
    并设置OnDateChangedListener来监听日期改变,当时间被改变时需要设置setOnTimeChangedListener监听来设置时间。
   datepicker_timepicker.xml 
   
         android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     >
            android:id= "@+id/textView_date_time1"
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="TextView"
     />
            android:id= "@+id/datePicker"
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
     />
            android:id= "@+id/timerPicker"
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
     />
     

你可能感兴趣的:(Android)