`

Android开发04—Android常用高级控件(上)

阅读更多
Android开发04—Android常用高级控件(上)

1. 自动完成文本框
AutoCompleteTextView类继承自EditText类。自动完成文本框的外观与文本框没什么区别,只是当用户输入某些文字时,会自动出现下拉菜单显示与输入文字相关的信息。
自动完成文本框可以在XML文件中使用属性进行设置,也可以在Java代码中通过方法进行设置。

实例:
main.xml:
<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:id="@+id/linearLayout1">
        <AutoCompleteTextView android:text="AutoCompleteTextView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/autoCompleteTextView1"></AutoCompleteTextView>
    </LinearLayout>

Activity:
package qijia.si;

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.ImageView;




public class MyAndroidProject extends Activity {
		
	private static final String[] myStr = new String[]{
			"aaa","bbb","ccc","aab","aac","aad"
			
	};	//常量数组用于提示
	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);   
        setContentView(R.layout.main);
        ArrayAdapter<String> aa = new ArrayAdapter<String>(
        		this,
        		android.R.layout.simple_dropdown_item_1line,
        		myStr
        );//使用适配器
    	AutoCompleteTextView myAuto = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
    	myAuto.setAdapter(aa);
    	myAuto.setThreshold(1);
    }
}

2. 滚动视图
ScrollView类继承自FrameLayout类。ScrollView其实是一个帧布局,一般情况下,其中的控件是按照线性进行布局的,用户可以对其进行滚动。
ScrollView既可以在XML中配置也可在Java代码中进行配置。
ScrollView的使用方法比较简单,只需要将需要滚动的控件添加到ScrollView中即可。ScrollView同一时刻只能包含一个View。

具体方法:
package qijia.si;

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ScrollView;
import android.widget.TextView;




public class MyAndroidProject extends Activity {
		
	ScrollView scrollView;
	String msg = "我是字符串,我很长很长!我是字符串,我很长很长!";
	String str = "";
	
	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);   
        setContentView(R.layout.main);
        scrollView = new ScrollView(this);
        TextView tv = new TextView(this);
        tv.setTextSize(23);
        for(int i = 0;i<10;i++){
        	str = str + msg;
        }
        tv.setText(str);
        scrollView.addView(tv);
        setContentView(scrollView);
        
    }  
}


3. 列表视图
ListView类是一种列表视图,将ListAdapter所提供的各个控件显示在一个垂直且可以滚动的列表中。
该类使用方法简单,只需要先初始化所需要得数据,然后创建适配器并将其设置给ListView,ListView便将信息以列表的形式显示到页面中。

使用案例:

string.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">AbsoluteExample</string>
    <string name="hello">您选择了</string>
    <string name="andy">Andy Rubin \nAndroid的创造者之一</string>
    <string name="Bill">Bill Joy \nJava创造者之一</string>
    <string name="edgar">Edgar F. Codd \n关系数据库之父</string>
    <string name="torvalds">Linus Torvalds \nLinux之父</string>
    <string name="turing">Turing Alan \nIT的祖师爷</string>
    <string name="ys">您选择了</string>
</resources>

colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="white">#ffffff</color>
    <color name="red">#ff0000</color>
    <color name="black">#000000</color>
    <color name="green">#00ff00</color>
    <color name="gray">#050505</color>
    <color name="blue">#0000ff</color>
</resources>
main.xml
<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent">
        <TextView android:layout_height="wrap_content" android:id="@+id/textView1" android:layout_width="fill_parent" android:textSize="24dip" android:textColor="@color/white" android:text="@string/hello"></TextView>
        <ListView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/listView1" android:choiceMode="singleChoice"></ListView>
    </LinearLayout>
  
  
   
   

Activity:
package qijia.si;

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ScrollView;
import android.widget.TextView;




public class MyAndroidProject extends Activity {
		
	int[] drawableIds = {R.drawable.andy,R.drawable.bill,R.drawable.edgar,R.drawable.torvalds,
				R.drawable.turing};
	int[] msgIds = {R.string.andy,R.string.Bill,R.string.edgar,R.string.torvalds,R.string.turing};
	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);   
        setContentView(R.layout.main);
        ListView lv = (ListView) findViewById(R.id.listView1);
        
        BaseAdapter ba = new BaseAdapter(){
        	public int  getCount() {return 5;}
        	public Object getItem(int arg0){return null;}
        	public long getItemId(int arg0){return 0;}
        	public View getView(int arg0,View arg1, ViewGroup arg2){
        		//动态生成每一个下拉项对应的View,每个下拉项View由LinearLayout
        		//中包含一个ImageView及一个TextView,由代码动态生成
        		LinearLayout ll = new LinearLayout(MyAndroidProject.this);
        		
        		ll.setOrientation(LinearLayout.HORIZONTAL);
        		ll.setPadding(5, 5, 5, 5);
        		ImageView ii = new ImageView(MyAndroidProject.this);
        		ii.setImageDrawable(getResources().getDrawable(drawableIds[arg0]));
        		ii.setScaleType(ImageView.ScaleType.FIT_XY);
        		ii.setLayoutParams(new Gallery.LayoutParams(100,98));
        		ll.addView(ii);
        		TextView tv = new TextView(MyAndroidProject.this);
        		tv.setText(getResources().getText(msgIds[arg0]));
        		tv.setTextSize(24);
        		tv.setTextColor(MyAndroidProject.this.getResources().getColor(R.color.white));
        		tv.setPadding(5, 5, 5, 5);
        		ll.addView(tv);
        		return ll;
        	
        		}
        	
        };
        lv.setAdapter(ba);
        lv.setOnItemSelectedListener(new OnItemSelectedListener(){
        	public void onItemSelected(AdapterView<?> arg0,View arg1, int arg2,long arg3){
        		TextView tv = (TextView) findViewById(R.id.textView1);
        		
        		LinearLayout ll = (LinearLayout)arg1;
        		
        		TextView tvn = (TextView)ll.getChildAt(1);
        		StringBuilder sb = new StringBuilder();
        		
        		sb.append(getResources().getText(R.string.ys));
        		sb.append(":");
        		sb.append(tvn.getText());
        		String stemp = sb.toString();
        		tv.setText(stemp.split("\\n")[0]);
        	}
        	public void onNothingSelected(AdapterView<?> arg0){}
        });
        lv.setOnItemClickListener(new OnItemClickListener(){
        		public void onItemClick(AdapterView<?> arg0,View arg1,int arg2,long arg3){
        			TextView tv = (TextView) findViewById(R.id.textView1);
        			LinearLayout ll =(LinearLayout) arg1;
        			
        			TextView tvn = (TextView)ll.getChildAt(1);
        			StringBuilder sb = new StringBuilder();
        			
        			sb.append(getResources().getText(R.string.ys));
        			sb.append(":");
        			sb.append(tvn.getText());
        			String stemp  = sb.toString();
        			tv.setText(stemp.split("\\n")[0]);
        		}
        });
    }  
}
4. 网络视图
GridView类同样位于android.widget包下。该视图将其空间以二维格式显示到表格中,而这些控件全部来自于ListAdapter适配器。
strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">当前无选中选项</string>
    <string name="app_name">Sample_5_3</string>
    <string name="andy">Andy Rubin</string>
    <string name="bill">Bill Joy</string>
    <string name="edgar">Edgar F. Codd</string>
    <string name="torvalds">Linus Torvalds</string>
    <string name="turing">Turing Alan</string>
    <string name="andydis">Android的创造者</string>
    <string name="billdis">Java创造者之一</string>
    <string name="edgardis">关系数据库之父</string>
    <string name="torvaldsdis">Linux之父</string>
    <string name="turingdis">IT的祖师爷</string>         
</resources>

colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#fd8d8d</color>
	<color name="green">#9cfda3</color>
	<color name="blue">#8d9dfd</color>
	<color name="white">#FFFFFF</color>
	<color name="black">#000000</color>
	<color name="gray">#050505</color>
</resources>
main.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:id="@+id/TextView01"
	    android:layout_width="fill_parent" 
	    android:layout_height="wrap_content" 
	    android:text="@string/hello"
	    android:textColor="@color/white"
	    android:textSize="24dip"/>
    <GridView 
	    android:id="@+id/GridView01" 
	    android:layout_width="fill_parent" 
	    android:layout_height="fill_parent"
	    android:verticalSpacing="5dip"
	    android:horizontalSpacing="5dip"
	    android:stretchMode="columnWidth"/>
</LinearLayout>
grid_row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
  android:id="@+id/LinearLayout01" 
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:orientation="horizontal"
  xmlns:android="http://schemas.android.com/apk/res/android">  
	<ImageView 
	   android:id="@+id/ImageView01" 
	   android:scaleType="fitXY"
	   android:layout_width="100dip"
	   android:layout_height="98dip"/>
	<TextView 
	    android:id="@+id/TextView02" 
	    android:layout_width="100dip" 
	    android:layout_height="wrap_content"
	    android:textColor="@color/white"
        android:textSize="24dip"
        android:paddingLeft="5dip"/>
	<TextView 
	    android:id="@+id/TextView03" 
	    android:layout_width="wrap_content" 
	    android:layout_height="wrap_content"
	    android:textColor="@color/white"
        android:textSize="24dip"
        android:paddingLeft="5dip"/>
</LinearLayout>
Activity:

package qijia.si;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
public class GridDemo extends Activity {
	//所有资源图片(andy、bill、edgar、torvalds、turing)id的数组
	int[] drawableIds=
		{R.drawable.andy,R.drawable.bill,R.drawable.edgar,R.drawable.torvalds,R.drawable.turing};
	//所有资源字符串(andy、bill、edgar、torvalds、turing)id的数组
	int[] nameIds=
		{R.string.andy,R.string.bill,R.string.edgar,R.string.torvalds,R.string.turing};
	int[] msgIds=
		{R.string.andydis,R.string.billdis,R.string.edgardis,
			R.string.torvaldsdis,R.string.turingdis};
    public List<? extends Map<String, ?>> generateDataList(){
    	ArrayList<Map<String,Object>> list=new ArrayList<Map<String,Object>>();;
    	int rowCounter=drawableIds.length;//得到表格的行数
    	for(int i=0;i<rowCounter;i++){//循环生成每行的包含对应各个列数据的Map;col1、col2、col3为列名
    		HashMap<String,Object> hmap=new HashMap<String,Object>();
    		hmap.put("col1", drawableIds[i]);   //第一列为图片 		
    		hmap.put("col2", this.getResources().getString(nameIds[i]));//第二例为姓名
    		hmap.put("col3", this.getResources().getString(msgIds[i]));//第三列为描述
    		list.add(hmap);
    	}    	
    	return list;
	}
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        GridView gv=(GridView)this.findViewById(R.id.GridView01);        
        SimpleAdapter sca=new SimpleAdapter(
        	this,
        	generateDataList(), //数据List
        	R.layout.grid_row, //行对应layout id
        	new String[]{"col1","col2","col3"}, //列名列表
        	new int[]{R.id.ImageView01,R.id.TextView02,R.id.TextView03}//列对应控件id列表
        );
        gv.setAdapter(sca);//为GridView设置数据适配器
        gv.setOnItemSelectedListener(//设置选项选中的监听器
           new OnItemSelectedListener(){
        	   public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {//重写选项被选中事件的处理方法
        		   TextView tv=(TextView)findViewById(R.id.TextView01);//获取主界面TextView
        		   LinearLayout ll=(LinearLayout)arg1;//获取当前选中选项对应的LinearLayout
        		   TextView tvn=(TextView)ll.getChildAt(1);//获取其中的TextView 
        		   TextView tvnL=(TextView)ll.getChildAt(2);//获取其中的TextView 
        		   StringBuilder sb=new StringBuilder();
        		   sb.append(tvn.getText());//获取姓名信息
        		   sb.append(" ");
        		   sb.append(tvnL.getText());//获取描述信息				
        		   tv.setText(sb.toString());//信息设置进主界面TextView		
        	   }
        	   public void onNothingSelected(AdapterView<?> arg0){}
           	}
        );  
        gv.setOnItemClickListener( //设置选项被单击的监听器
        	new OnItemClickListener(){
        	   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {//重写选项被单击事件的处理方法
        		   TextView tv=(TextView)findViewById(R.id.TextView01);//获取主界面TextView
        		   LinearLayout ll=(LinearLayout)arg1;//获取当前选中选项对应的LinearLayout
        		   TextView tvn=(TextView)ll.getChildAt(1);//获取其中的TextView 
        		   TextView tvnL=(TextView)ll.getChildAt(2);//获取其中的TextView 
        		   StringBuilder sb=new StringBuilder();
        		   sb.append(tvn.getText());//获取姓名信息
        		   sb.append(" ");
        		   sb.append(tvnL.getText());//获取描述信息				
        		   tv.setText(sb.toString());//信息设置进主界面TextView	
        	   }        	   
           	}
        );        
    }
}
分享到:
评论

相关推荐

    android开发揭秘PDF

    4.2 常用控件应用 4.2.1 文本框(Textiew) 4.2.2 列表(ListView) 4.2.3 提示(T0ast) 4.2.4 编辑框(EditText) 4.2.5 单项选择(RadioGroup、RadioButton 4.2.6 多项选择(CheckBox) 4.2.7 下拉列表(Spinner) 4.2.8 自动...

    老罗android开发视频教程全集百度网盘下载

    【第一版第八章】老罗Android开发视频-常用UI控件(33集) 【第一版第九章】老罗Android开发视频--存储数据和文件(7集) 【第一版第十章】老罗Android开发视频--对话框介绍(4集) 【第一版第十一章】老罗...

    Android开发案例驱动教程 配套代码

    第6章 UI高级控件 83 6.1 列表类控件 83 6.1.1 Adapter概念 83 6.1.2 AutoComplete 84 6.1.3 Spinner 87 6.1.4 ListView 90 6.1.5 GridView 96 6.1.6 Gallery 99 6.2 Toast 103 6.2.1 文本类型 103 6.2.2 ...

    Android核心技术与实例详解各章案例1

    《Android核心技术与实例详解》涵盖的主要内容Aridroid开发起步,Android布局管理器,Android常用高级控件,游戏与3D应用程序开发,网络与数据处理,手机特有Feature开发,传感器应用的开发,Android游戏开发实践...

    Android核心技术与实例详解各章案例2

    《Android核心技术与实例详解》涵盖的主要内容Aridroid开发起步,Android布局管理器,Android常用高级控件,游戏与3D应用程序开发,网络与数据处理,手机特有Feature开发,传感器应用的开发,Android游戏开发实践...

    Android核心技术与实例详解各章案例3

    《Android核心技术与实例详解》涵盖的主要内容Aridroid开发起步,Android布局管理器,Android常用高级控件,游戏与3D应用程序开发,网络与数据处理,手机特有Feature开发,传感器应用的开发,Android游戏开发实践...

    Android核心技术与实例详解各章案例4

    《Android核心技术与实例详解》涵盖的主要内容Aridroid开发起步,Android布局管理器,Android常用高级控件,游戏与3D应用程序开发,网络与数据处理,手机特有Feature开发,传感器应用的开发,Android游戏开发实践...

    Android核心技术与实例详解各章案例5

    《Android核心技术与实例详解》涵盖的主要内容Aridroid开发起步,Android布局管理器,Android常用高级控件,游戏与3D应用程序开发,网络与数据处理,手机特有Feature开发,传感器应用的开发,Android游戏开发实践...

    Android核心技术与实例详解 PDF扫描版

    第5章 Android常用高级控件 第6章 菜单与对话框 高 级 篇 第7章 Android事件处理模型 第8章 游戏与3D应用程序开发 第9章 消息广播与服务 第10章 网络与数据处理 第11章 手机通信功能开发 第12章 手机特有Feature开发...

    《Android应用开发揭秘》附带光盘代码.

     4.2 常用控件应用  4.2.1 文本框(Textiew)  4.2.2 列表(ListView)  4.2.3 提示(T0ast)  4.2.4 编辑框(EditText)  4.2.5 单项选择(RadioGroup、RadioButton  4.2.6 多项选择(CheckBox)  4.2.7 下拉列表...

    Android应用开发揭秘pdf高清版

    最重要的是还全面介绍了如何利用原生的C,C++(NDK)和Python、Lua等脚本语言(AndroidScriptingEnvironment)来开发Android应用,《Android应用开发揭秘》实战性强,书中的每个知识点都有配精心设计的示例,尤为...

    《Android应用开发揭秘》源码

     4.2 常用控件应用  4.2.1 文本框(Textiew)  4.2.2 列表(ListView)  4.2.3 提示(T0ast)  4.2.4 编辑框(EditText)  4.2.5 单项选择(RadioGroup、RadioButton  4.2.6 多项选择(CheckBox)  4.2.7 下拉列表...

    《Android群英传》完整扫描版

    第2章 Android开发工具新接触 13 2.1 Android开发IDE介绍 14 2.1.1 Android Studio初体验 14 2.1.2 Android Studio配置 15 2.2 Android Studio高级使用技巧 19 2.2.1 更新SDK 20 2.2.2 Android Studio常用界面 21 ...

    Android学习安卓客户端

    2、Android常用控件的使用 3、Android多线程、网络编程等高级应用 4、Html5及Sqlite数据库前沿知识 无论您是在校大学生,还是职业学员,或者Java开发人员,本书都志在全面提高您的Android编程思想和开发实力,使...

    Android核心技术与实例详解第2版

    全书分为3篇共18章,第1篇以简单易懂的实例为依托,详细介绍了Android平台的基本控件、高级控件、常用界面布局及菜单对话框等相关知识;第2篇介绍了Andr 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    爱上Android-试读

    本书深入浅出,详细讲解了Android开发的知识,主要内容包括:Android的体系架构、Android Studio、项目的创建、Android工程目录、调试程序、界面的搭建;常用的控件和属性、提示信息Toast和Snackbar、点击事件3种...

    Android学习(apk)

    2、Android常用控件的使用 3、Android多线程、网络编程等高级应用 4、Html5及Sqlite数据库前沿知识 无论您是在校大学生,还是职业学员,或者Java开发人员,本书都志在全面提高您的Android编程思想和开发实力,使...

Global site tag (gtag.js) - Google Analytics