系出名门Android(6) - 控件(View)之DatePicker, TimePicker, ToggleButton, EditText, ProgressBar

简介:
[索引页]
[源码下载]


系出名门Android(6) - 控件(View)之DatePicker, TimePicker, ToggleButton, EditText, ProgressBar, SeekBar, AutoCompleteTextView, MultiAutoCompleteTextView


作者: webabcd


介绍
在 Android 中使用各种控件(View)
  • DatePicker - 日期选择控件
  • TimePicker - 时间选择控件
  • ToggleButton - 双状态按钮控件
  • EditText - 可编辑文本控件
  • ProgressBar - 进度条控件
  • SeekBar - 可拖动的进度条控件
  • AutoCompleteTextView - 支持自动完成功能的可编辑文本控件
  • MultiAutoCompleteTextView - 支持自动完成功能的可编辑文本控件,允许输入多值(多值之间会自动地用指定的分隔符分开)


1、DatePicker 的 Demo
datepicker.xml 
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  
          
        <!--  
                DatePicker - 日期选择控件 
        
-->  
         < DatePicker   android:id ="@+id/datePicker"  
                 android:layout_width ="wrap_content"   android:layout_height ="wrap_content" >  
         </ DatePicker >  
          
</ LinearLayout >
 
_DatePicker.java
package  com.webabcd.view;  

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

public   class  _DatePicker   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);  
                 this.setContentView(R.layout.datepicker);  

                 // 具体的应用可参见对话框中的示例 
                setTitle( "DatePicker");  
        }  
}
 
 
2、TimePicker 的 Demo
timepicker.xml
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  
          
        <!--  
                TimePicker - 时间选择控件 
        
-->  
         < TimePicker   android:id ="@+id/timePicker"  
                 android:layout_width ="wrap_content"   android:layout_height ="wrap_content" >  
         </ TimePicker >  
          
</ LinearLayout >
 
_TimePicker.java
package  com.webabcd.view;  

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

public   class  _TimePicker   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);  
                 this.setContentView(R.layout.timepicker);  

                 // 具体的应用可参见对话框中的示例 
                setTitle( "TimePicker");  
        }  
}
 
 
3、ToggleButton 的 Demo
togglebutton.xml
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  
          
         < TextView   android:layout_width ="fill_parent"  
                 android:layout_height ="wrap_content"   android:id ="@+id/textView"   />  
                  
        <!--     
                ToggleButton - 双状态按钮控件 
                        textOn - 当按钮状态为 true 时所显示的文本 
                        textOff - 当按钮状态为 false 时所显示的文本 
        
-->  
         < ToggleButton   android:id ="@+id/toggleButton"  
                 android:layout_width ="wrap_content"   android:layout_height ="wrap_content"  
                 android:textOn ="关闭"   android:textOff ="打开"   />  
                  
</ LinearLayout >
 
_ToggleButton.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.os.Bundle;  
import  android.view.View;  
import  android.widget.Button;  
import  android.widget.TextView;  
import  android.widget.ToggleButton;  

public   class  _ToggleButton   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);  
                 this.setContentView(R.layout.togglebutton);  

                setTitle( "ToggleButton");  
                  
                 final  ToggleButton btn = (ToggleButton)   this.findViewById(R.id.toggleButton);  
                 // setOnClickListener() - 响应按钮的鼠标单击事件 
                btn.setOnClickListener( new  Button.OnClickListener(){  
                        @Override  
                         public   void  onClick(View v) {  
                                TextView txt = (TextView) _ToggleButton. this.findViewById(R.id.textView);  
                                 // ToggleButton.isChecked() - 双状态按钮的按钮状态 
                                txt.setText( "按钮状态:"  + String.valueOf(btn.isChecked()));  
                        }  
                });  
        }  
}
 
 
4、EditText 的 Demo
edittext.xml
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  
          
        <!--  
                EditText - 可编辑文本控件 
        
-->  
         < EditText   android:id ="@+id/editText"   android:layout_width ="fill_parent"  
                 android:layout_height ="wrap_content" >  
         </ EditText >  
          
</ LinearLayout >
 
_EditText.java
package  com.webabcd.view;  

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

public   class  _EditText   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);  
                 this.setContentView(R.layout.edittext);  

                setTitle( "EditText");  
                  
                EditText txt = (EditText)   this.findViewById(R.id.editText);  
                txt.setText( "我可编辑");  
        }  
}
 
 
5、ProgressBar 的 Demo
progressbar.xml
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  

        <!--  
                ProgressBar - 进度条控件 
        
-->  

        <!-- 以下分别为大、中、小的进度条控件(圆圈状)-->  
         < ProgressBar   android:id ="@+android:id/progress_large"  
                 style ="?android:attr/progressBarStyleLarge"   android:layout_width ="wrap_content"  
                 android:layout_height ="wrap_content"   />  
         < ProgressBar   android:id ="@+android:id/progress"  
                 android:layout_width ="wrap_content"   android:layout_height ="wrap_content"   />  
         < ProgressBar   android:id ="@+android:id/progress_small"  
                 style ="?android:attr/progressBarStyleSmall"   android:layout_width ="wrap_content"  
                 android:layout_height ="wrap_content"   />  

        <!--  
                进度条控件(条状)的演示 
                        style - 进度条的样式,本例使用内置样式 
                        max - 进度的最大值 
                        progress - 第一进度位置 
                        secondaryProgress - 第二进度位置 
        
-->  
         < ProgressBar   android:id ="@+id/progress_horizontal"  
                 style ="?android:attr/progressBarStyleHorizontal"   android:layout_width ="200px"  
                 android:layout_height ="wrap_content"   android:max ="100"  
                 android:progress ="50"   android:secondaryProgress ="75"   />  

</ LinearLayout >
 
_ProgressBar.java
package  com.webabcd.view;  

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


// 另见对话框中的进度条 
public   class  _ProgressBar   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);                  
                  
                 // 设置特性以允许在应用程序的标题栏上显示进度条(条状) 
                requestWindowFeature(Window.FEATURE_PROGRESS);  
                 // 设置特性以允许在应用程序的标题栏上显示进度条(圆圈状) 
                requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);  

                 this.setContentView(R.layout.progressbar);  

                setTitle( "ProgressBar");  
                  
                 // 在标题栏上显示进度条(条状) 
                setProgressBarVisibility( true);  
                 // 在标题栏上显示进度条(圆圈状) 
                setProgressBarIndeterminateVisibility( true);  
                  
                 // 指定进度条的进度 
                setProgress(50 * 100);  
                setSecondaryProgress(75 * 100);  
        }  
}
 
 
6、SeekBar 的 Demo
seekbar.xml 
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  
          
        <!--  
                SeekBar - 可拖动的进度条控件 
                        max - 进度的最大值 
                        progress - 第一进度位置 
                        secondaryProgress - 第二进度位置 
        
-->  
         < SeekBar   android:id ="@+id/seekBar"   android:layout_width ="fill_parent"  
                 android:layout_height ="wrap_content"   android:max ="100"  
                 android:progress ="50"   android:secondaryProgress ="75"   />  

         < TextView   android:id ="@+id/progress"   android:layout_width ="fill_parent"  
                 android:layout_height ="wrap_content"   />  

         < TextView   android:id ="@+id/tracking"   android:layout_width ="fill_parent"  
                 android:layout_height ="wrap_content"   />  

</ LinearLayout >
 
_SeekBar.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.os.Bundle;  
import  android.widget.SeekBar;  
import  android.widget.TextView;  

public   class  _SeekBar   extends  Activity   implements  
                SeekBar.OnSeekBarChangeListener {  

        SeekBar mSeekBar;  
        TextView mProgressText;  
        TextView mTrackingText;  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 // TODO Auto-generated method stub 
                 super.onCreate(savedInstanceState);  
                 this.setContentView(R.layout.seekbar);  

                setTitle( "SeekBar");  

                mSeekBar = (SeekBar) findViewById(R.id.seekBar);  
                 // setOnSeekBarChangeListener() - 响应拖动进度条事件 
                mSeekBar.setOnSeekBarChangeListener( this);  
                  
                mProgressText = (TextView) findViewById(R.id.progress);  
                mTrackingText = (TextView) findViewById(R.id.tracking);  
        }  

         // 拖动进度条后,进度发生改变时的回调事件 
         public   void  onProgressChanged(SeekBar seekBar,   int  progress,  
                         boolean  fromTouch) {  
                mProgressText.setText(progress +   "%");  
        }  

         // 拖动进度条前开始跟踪触摸 
         public   void  onStartTrackingTouch(SeekBar seekBar) {  
                mTrackingText.setText( "开始跟踪触摸");  
        }  

         // 拖动进度条后停止跟踪触摸 
         public   void  onStopTrackingTouch(SeekBar seekBar) {  
                mTrackingText.setText( "停止跟踪触摸");  
        }  

}
 
 
7、AutoCompleteTextView 的 Demo
autocompletetextview.xml
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  

        <!--  
                AutoCompleteTextView - 支持自动完成功能的可编辑文本控件 
        
-->  
         < AutoCompleteTextView   android:id ="@+id/editText"  
                 android:layout_width ="fill_parent"   android:layout_height ="wrap_content"   />  

</ LinearLayout >
 
_AutoCompleteTextView.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.os.Bundle;  
import  android.widget.ArrayAdapter;  
import  android.widget.AutoCompleteTextView;  

public   class  _AutoCompleteTextView   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 super.onCreate(savedInstanceState);  
                setContentView(R.layout.autocompletetextview);  

                setTitle( "AutoCompleteTextView");  
                  
                 // 实例化适配器,指定显示格式及数据源 
                ArrayAdapter<String> adapter =   new  ArrayAdapter<String>(  
                                 this,  
                                android.R.layout.simple_dropdown_item_1line,    
                                ary);  
                AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.editText);  
                 // 指定自动完成控件的适配器 
                textView.setAdapter(adapter);  
        }  

         // 自动完成控件的所需数据的数据源 
         private  String[] ary =   new  String[] {  
                 "abc",  
                 "abcd",  
                 "abcde",  
                 "abcdef",  
                 "abcdefg",  
                 "hij",  
                 "hijk",  
                 "hijkl",  
                 "hijklm",  
                 "hijklmn",  
        };  
}
 
 
8、MultiAutoCompleteTextView 的 Demo
multiautocompletetextview.xml
<? xml   version ="1.0"   encoding ="utf-8" ?>  
< LinearLayout   xmlns:android ="http://schemas.android.com/apk/res/android"  
         android:orientation ="vertical"   android:layout_width ="fill_parent"  
         android:layout_height ="fill_parent" >  

        <!--  
                MultiAutoCompleteTextView - 支持自动完成功能的可编辑文本控件,允许输入多值(多值之间会自动地用指定的分隔符分开) 
        
-->  
         < MultiAutoCompleteTextView   android:id ="@+id/editText"  
                 android:layout_width ="fill_parent"   android:layout_height ="wrap_content"   />  

</ LinearLayout >
 
_MultiAutoCompleteTextView.java
package  com.webabcd.view;  

import  android.app.Activity;  
import  android.os.Bundle;  
import  android.widget.ArrayAdapter;  
import  android.widget.MultiAutoCompleteTextView;  

public   class  _MultiAutoCompleteTextView   extends  Activity {  

        @Override  
         protected   void  onCreate(Bundle savedInstanceState) {  
                 super.onCreate(savedInstanceState);  
                setContentView(R.layout.multiautocompletetextview);  

                setTitle( "MultiAutoCompleteTextView");  
                  
                 // 实例化适配器,指定显示格式及数据源 
                ArrayAdapter<String> adapter =   new  ArrayAdapter<String>(  
                                 this,  
                                android.R.layout.simple_dropdown_item_1line,    
                                ary);  
                MultiAutoCompleteTextView textView = (MultiAutoCompleteTextView) findViewById(R.id.editText);  
                textView.setAdapter(adapter);  
                  
                 // 设置多个值之间的分隔符,此处为逗号 
                textView.setTokenizer( new  MultiAutoCompleteTextView.CommaTokenizer());  
        }  

         // 自动完成控件的所需数据的数据源 
         private  String[] ary =   new  String[] {  
                 "abc",  
                 "abcd",  
                 "abcde",  
                 "abcdef",  
                 "abcdefg",  
                 "hij",  
                 "hijk",  
                 "hijkl",  
                 "hijklm",  
                 "hijklmn",  
        };  
}
 
 


     本文转自webabcd 51CTO博客,原文链接: http://blog.51cto.com/webabcd/342063 ,如需转载请自行联系原作者


相关文章
|
1月前
|
XML 前端开发 Android开发
Android:UI:Drawable:View/ImageView与Drawable
通过本文的介绍,我们详细探讨了Android中Drawable、View和ImageView的使用方法及其相互关系。Drawable作为图像和图形的抽象表示,提供了丰富的子类和自定义能力,使得开发者能够灵活地实现各种UI效果。View和ImageView则通过使用Drawable实现了各种图像和图形的显示需求。希望本文能为您在Android开发中使用Drawable提供有价值的参考和指导。
40 2
|
1月前
|
Android开发 开发者 UED
安卓开发中自定义View的实现与性能优化
【10月更文挑战第28天】在安卓开发领域,自定义View是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何高效地创建和管理自定义View,以及如何通过代码和性能调优来确保流畅的交互体验。我们将一起学习自定义View的生命周期、绘图基础和事件处理,进而探索内存和布局优化技巧,最终实现既美观又高效的安卓界面。
37 5
|
2月前
|
缓存 数据处理 Android开发
在 Android 中使用 RxJava 更新 View
【10月更文挑战第20天】使用 RxJava 来更新 View 可以提供更优雅、更高效的解决方案。通过合理地运用操作符和订阅机制,我们能够轻松地处理异步数据并在主线程中进行 View 的更新。在实际应用中,需要根据具体情况进行灵活运用,并注意相关的注意事项和性能优化,以确保应用的稳定性和流畅性。可以通过不断的实践和探索,进一步掌握在 Android 中使用 RxJava 更新 View 的技巧和方法,为开发高质量的 Android 应用提供有力支持。
|
2月前
|
缓存 调度 Android开发
Android 在子线程更新 View
【10月更文挑战第21天】在 Android 开发中,虽然不能直接在子线程更新 View,但通过使用 Handler、AsyncTask 或 RxJava 等方法,可以实现子线程操作并在主线程更新 View 的目的。在实际应用中,需要根据具体情况选择合适的方法,并注意相关的注意事项和性能优化,以确保应用的稳定性和流畅性。可以通过不断的实践和探索,进一步掌握在子线程更新 View 的技巧和方法,为开发高质量的 Android 应用提供支持。
38 2
|
2月前
|
XML 前端开发 Android开发
Android面试高频知识点(3) 详解Android View的绘制流程
Android面试高频知识点(3) 详解Android View的绘制流程
Android面试高频知识点(3) 详解Android View的绘制流程
|
XML Android开发 数据格式
Android自定义控件(十二)——自定义属性及应用
Android自定义控件(十二)——自定义属性及应用
188 0
Android自定义控件(十二)——自定义属性及应用
|
XML Android开发 数据格式
Android开发技巧——自定义控件之自定义属性
Android开发技巧——自定义控件之自定义属性 掌握自定义控件是很重要的,因为通过自定义控件,能够:解决UI问题,优化布局性能,简化布局代码。 上一篇讲了如何通过xml把几个控件组织起来,并继承某个ViewGroup子类,把它们封装起来使用。
1161 0
|
XML 前端开发 Android开发
android自定义控件(理论知识学习 +自定义属性的讲解)
View树和UI界面架构图   UI界面架构图: android视图最外层是一个window对象。 phoneWindow来实现。 phoneWindow将一个decorView作为整个布局的根view. 屏幕分为TitleView和ContentView. ContentView的根布局为framelayout.   view的测量: view的测量通过onMesure()来进行的: onMesure用来确定视图大小和位置。
1055 0
|
Android开发
Android自定义控件及自定义属性
Android自定义控件及自定义属性 自定义控件 创建自定义控件 自定义一个类,继承View 继承View还是哪个类,取决于你要实现一个什么样的控件 如...
1249 0