安卓的控件之AutoCompleteTextView,ListView,Menu,Dialog

一.自动补全文本框(AutoCompleteTextView)
是Android提供的一种便捷输入建议的文本框,这些输入建议可以来源于曾经输入的历史记录、cookies、数据字典等。
源码:
布局只有一个TextView和AutoCompleteTextView。
<span style="font-family: Arial, Helvetica, sans-serif;"><pre name="code" class="java">j<span style="font-family: Arial, Helvetica, sans-serif;">ava代码</span></span>
 
<span style="font-family: Arial, Helvetica, sans-serif;"><pre name="code" class="java"></span>
<span style="font-family: Arial, Helvetica, sans-serif;">public class LoginActivity extends Activity {</span>
//1.定义
    private TextView tView;
    private AutoCompleteTextView auto;
    static final String[] str=new String[]{"wang","wangyu","wangyuyu","wangyuwen"};
    ArrayAdapter<String> adapter;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.login);
		findID();
//2.将字符串内容导入适配器
		adapter=new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,str);
//3.设置阈值,一般设为1
		auto.setThreshold(1);
//4.通过适配器获得字符串内容
		auto.setAdapter(adapter);
	}

	public  void findID(){
		this.tView=(TextView)this.findViewById(R.id.userText);
		this.auto=(AutoCompleteTextView)this.findViewById(R.id.userAuto); 
	}

}
效果:
<pre name="code" class="java"><img src="https://img-blog.csdn.net/20150406142548731?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3l1NTAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
 二.列表(ListVIew) 

是Android中非常重要也相对复杂的一个控件,将需要显示的内容以列表的形式展示出来,并且能够根据数据的长度适当地调节显示。SimpleAdapter是扩展性最好的一种适配器,通过这个适配器,可以让ListView中的每项内容可以自定义出各种效果,可以将ListView中某项的布局信息直接写在一个单独的xml文件中,通过R.layout.layout_name中来获得这个布局。

源码:

java代码

public class PersonHome extends Activity {
//1.定义SimpleAdapter和ListView
	private SimpleAdapter simpleAdapter;
	private ListView lView;
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.person_home);
//2.实例化
		lView = (ListView) findViewById(R.id.listView1);
		simpleAdapter = new SimpleAdapter(this, getMyData(),
				R.layout.personal_item, new String[] { "photo", "school",
						"sex", "star_level", "detail" }, new int[] {
						R.id.imageView1, R.id.textView1, R.id.textView2,
						R.id.textView3, R.id.button1 });
//3.把适配器添加到ListView
		lView.setAdapter(simpleAdapter);	};
//此方法里面填充ListView需要显示的内容
	private List<Map<String, Object>> getMyData() {
		List<Map<String, Object>> mList = new ArrayList<Map<String, Object>>();
		Map<String, Object> mMap = new HashMap<String, Object>();
		mMap.put("photo", R.drawable.button1);
		mMap.put("school", "民大驾校");
		mMap.put("sex", "男");
		mMap.put("star_level", "3星级");
		mMap.put("detail", "详细>>>");
		mList.add(mMap);
		mMap = new HashMap<String, Object>();
		mMap.put("photo", R.drawable.button2);
		mMap.put("school", "鼠星驾校");
		mMap.put("sex", "女");
		mMap.put("star_level", "5星级");
		mMap.put("detail", "详细>>>");
		mList.add(mMap);
		return mList;
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.person_home, menu);
		return true;
	}

}
xml代码

person_home.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".PersonHome" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="24dp"
        android:layout_marginTop="33dp" >
    </ListView>

   

</RelativeLayout>

person_item.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="117dp"
        android:layout_height="85dp"
        android:layout_marginTop="24dp"
        android:src="@drawable/button1" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/imageView1"
        android:layout_toRightOf="@+id/imageView1"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="14dp"
        android:layout_toRightOf="@+id/imageView1"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/imageView1"
        android:layout_alignLeft="@+id/textView2"
        android:text="TextView" />

    <Button
        android:id="@+id/button1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/textView3"
        android:layout_alignParentRight="true"
        android:layout_marginRight="28dp"
        android:text="Button" />

</RelativeLayout>
效果:
<pre name="code" class="html">
 三.菜单(Menu) 

Android中的菜单分为三种:选项菜单(OptionsMenu),上下文菜单(ContextMenu),子菜单(SubMenu)

1.选项菜单(OptionsMenu):单击Menu键时会在当前屏幕的下面弹出一个菜单,即选项菜单,显示当前Activity的可用操作列表。

2.上下文菜单(ContextMenu):长按控件会弹出一个菜单

3.子菜单(SubMenu):是一个层层递进的菜单

源码:

java代码

public class MenuActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_menu);
		TextView tView=(TextView)findViewById(R.id.menuText);
		registerForContextMenu(tView);//为文本框注册上下文菜单,长按文本会弹出一个上下文菜单
	}

	@Override
//系统自动调用函数生成选项菜单,表明如何创建菜单
	public boolean onCreateOptionsMenu(Menu menu) {
		menu.add(Menu.NONE,1,1,"添加").setIcon(android.R.drawable.ic_menu_add);
		menu.add(Menu.NONE,2,1,"删除").setIcon(android.R.drawable.ic_menu_delete);
		menu.add(Menu.NONE,3,2,"帮助").setIcon(android.R.drawable.ic_menu_help);
		menu.add(Menu.NONE,4,2,"详情").setIcon(android.R.drawable.ic_menu_info_details);
		menu.add(Menu.NONE,5,2,"保存").setIcon(android.R.drawable.ic_menu_save);	
		return true;
	}
//创建上下文菜单和子菜单
	public void onCreateContextMenu(ContextMenu menu,View view,ContextMenuInfo menuInfo){
		menu.setHeaderTitle("上下文菜单");
		menu.add(0,6,0,"菜单项1");
		SubMenu subMenu=menu.addSubMenu("菜单一");
		subMenu.add(0,7,0,"子菜单项1");
	}
//某项菜单被选择后的响应事件
	public boolean onOptionsItemSelected(MenuItem item) {
<span style="white-space:pre">		</span>switch (item.getItemId()) {
<span style="white-space:pre">		</span>case 1:
<span style="white-space:pre">			</span>Toast.makeText(this, "add in the menu", Toast.LENGTH_LONG).show();
<span style="white-space:pre">			</span>break;
<span style="white-space:pre">		</span>case 2:
<span style="white-space:pre">			</span>Toast.makeText(this, "delete in the menu", Toast.LENGTH_LONG)
<span style="white-space:pre">					</span>.show();
<span style="white-space:pre">			</span>break;
<span style="white-space:pre">		</span>case 3:
<span style="white-space:pre">			</span>Toast.makeText(this, "help in the menu", Toast.LENGTH_LONG).show();
<span style="white-space:pre">			</span>break;
<span style="white-space:pre">		</span>case 4:
<span style="white-space:pre">			</span>Toast.makeText(this, "info in the menu", Toast.LENGTH_LONG).show();
<span style="white-space:pre">			</span>break;
<span style="white-space:pre">		</span>case 5:
<span style="white-space:pre">			</span>Toast.makeText(this, "save in the menu", Toast.LENGTH_LONG).show();
<span style="white-space:pre">			</span>break;
<span style="white-space:pre">		</span>case 6:
<span style="white-space:pre">			</span>Toast.makeText(this, "选择了菜单项1", Toast.LENGTH_LONG).show();
<span style="white-space:pre">		</span>case 7:
<span style="white-space:pre">			</span>Toast.makeText(this, "zi菜单项1", Toast.LENGTH_LONG).show();
<span style="white-space:pre">		</span>default:
<span style="white-space:pre">			</span>break;
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>return true;
<span style="white-space:pre">	</span>}
}
布局文件只有一个TextView控件
效果:
<img src="https://img-blog.csdn.net/20150406142618262?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3l1NTAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="https://img-blog.csdn.net/20150406142921734?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3l1NTAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="317" height="455" alt="" /><pre name="code" class="java"><img src="https://img-blog.csdn.net/20150406142527612?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3l1NTAx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="317" height="455" alt="" />
 
 四.对话框(Dialog)Android提供的与用户交互的对象。最常用的是AlertDialog,ProgressDialog 

AlertDialog:允许在对话窗口最多添加三个按钮(positive,neutral,negative)

源码:

java代码

public class DialogActivity extends Activity {
	private Button button;
<pre name="code" class="java">        private Button button1;
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_dialog);findID();

 
//定义按钮的监听
		button.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				showDialog(0);

			}
		});
                <pre name="code" class="java">                button1.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				showDialog(1);

			}
		});
}//生成对话框的操作public Dialog onCreateDialog(int id) {switch (id) {case 0:return Dialog1(DialogActivity.this);
 
                case 1:
<span style="white-space:pre">			</span>return Dialog2(DialogActivity.this);
		default:
			break;
		}
		return null;
	}
	private Dialog Dialog1(Context context) {
//定义三个按钮的对话框
		AlertDialog.Builder dialog1 = new AlertDialog.Builder(context);
		dialog1.setIcon(R.drawable.ic_launcher);
		dialog1.setTitle("three buttons");
		dialog1.setMessage("三个按钮的对话框");
		dialog1.setPositiveButton("登录", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface arg0, int arg1) {
				setTitle("是否登錄");
			}
		});
		dialog1.setNeutralButton("提示",
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface arg0, int arg1) {
						// TODO Auto-generated method stub
						setTitle("是否提示");
					}
				});
		dialog1.setNegativeButton("取消",
				new DialogInterface.OnClickListener() {

					@Override
					public void onClick(DialogInterface arg0, int arg1) {
						// TODO Auto-generated method stub
						setTitle("是否取消");
					}
				});
		return dialog1.create();
	}
//生成对话框对象,并设置标题和显示内容
        private Dialog Dialog2(Context context) {
<span style="white-space:pre">		</span>final ProgressDialog dialog2 = new ProgressDialog(context);
<span style="white-space:pre">		</span>dialog2.setTitle("进度条对话框");
<span style="white-space:pre">		</span>dialog2.setMessage("正在连接");
<span style="white-space:pre">		</span>dialog2.setButton("取消", new DialogInterface.OnClickListener() {


<span style="white-space:pre">			</span>@Override
<span style="white-space:pre">			</span>public void onClick(DialogInterface arg0, int arg1) {
<span style="white-space:pre">				</span>dialog2.dismiss();
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>});
<span style="white-space:pre">		</span>return dialog2;
<span style="white-space:pre">	</span>}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.dialog, menu);
		return true;
	}

	public void findID() {
<pre name="code" class="java">         button = (Button) findViewById(R.id.buttonDialog);
         button1 = (Button) findViewById(R.id.progressDialog);
}}
 布局文件为两个按钮。 

效果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值