当前位置: 代码迷 >> Android >> Android开发 - 惯用控件
  详细解决方案

Android开发 - 惯用控件

热度:21   发布时间:2016-05-01 18:35:12.0
Android开发 - 常用控件

back>>

1. TextView

??? * 用来显示文本的标签,类似SWT中的Label。在layout的main.xml布局文件中添加TextView组件

<TextView  	android:id="@+id/myTextView02"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="@string/hello"    />

???? * 在Java代码中得到该Textview

		TextView myTextView = (TextView) findViewById(R.id.myTextView02);		myTextView.setText(String.valueOf(result));

?

2. EditText

??? * 在布局文件中添加EditText组件

<EditText	android:id="@+id/factorOne"	android:layout_width="fill_parent"	android:layout_height="wrap_content"/>

???? * 在Java代码中操作该组件

		EditText factorOne = (EditText) findViewById(R.id.factorOne);		String factorOneStr = factorOne.getText().toString();

?

3. Button

??? * 在布局文件中添加Button组件

<Button 	android:id="@+id/calcaulate"	android:layout_width="fill_parent"	android:layout_height="wrap_content"/>

??? * 在Java代码中操作该组件

			Button calculate = (Button) findViewById(R.id.calcaulate);			calculate.setText(R.string.calculate);			//设置监听器。 listener利用了Observer的设计模式			calculate.setOnClickListener(new CalculateListener());。。。。	// 内部类可以使用外部类的成员变量和函数	// 内部类的学习	class CalculateListener implements OnClickListener {		public void onClick(View v) {			/*			 * 乘法 1.取两个EditText控件的值 2.将这两个值放到intent对象中			 * 3.使用这个Intent对象启动Activity02			 */			String factorOneStr = factorOne.getText().toString();			String factorTwoStr = factorTwo.getText().toString();			Intent intent = new Intent();			intent.putExtra("one", factorOneStr);			intent.putExtra("two", factorTwoStr);			intent.setClass(Activity01.this, Activity02.class);			Activity01.this.startActivity(intent);		}	}

?

4. Menu

??? * Menu控件不需要配置到布局文件中,当点击menu按钮时,会调用onCreateOptionsMenu(Menu menu)方法;

??????? - 调用系统提供的菜单项

	@Override	public boolean onCreateOptionsMenu(Menu menu) {		menu.add(0, 1, 1, R.string.exit);//添加菜单项		menu.add(0, 2, 2, R.string.about);		return super.onCreateOptionsMenu(menu);	}

??????? - 自定义菜单按钮控件,当点击菜单项中的按钮时,会调用onOptionsItemSelected(MenuItem item)

	@Override	public boolean onCreateOptionsMenu(Menu menu) {		menu.add(0, UPDATE, 1, R.string.mp3list_update);		menu.add(0, ABOUT, 2, R.string.mp3list_about);		return super.onCreateOptionsMenu(menu);	}	@Override	public boolean onOptionsItemSelected(MenuItem item) {		if (item.getItemId() == UPDATE) {			updateListView();//自定义操作方法		} else if (item.getItemId() == ABOUT) {			// 用户点击了关于按钮		}		return super.onOptionsItemSelected(item);	}

5. 单选按钮和复选框(代码见Activity_07)

? ? * 单选按钮

??????? - 单选按钮控件(RadioButton)需要显示在单选按钮组中(RadioGroup),布局文件声明如下

<RadioGroup	android:id="@+id/genderGroup"    android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:orientation="vertical"    >    <RadioButton    	android:id="@+id/femaleButton" 	    android:layout_width="wrap_content"   	    android:layout_height="wrap_content"   	    android:text="@string/female"  	    />    <RadioButton    	android:id="@+id/maleButton" 	    android:layout_width="wrap_content"   	    android:layout_height="wrap_content"   	    android:text="@string/male"  	    /></RadioGroup>

??????? - 在java中操作,添加单选按钮事件监听

        RadioGroup genderGroup = (RadioGroup)findViewById(R.id.genderGroup);        RadioButton femaleButton = (RadioButton)findViewById(R.id.femaleButton);        RadioButton maleButton = (RadioButton)findViewById(R.id.maleButton);        //为RadioGroup设置监听器,需要注意的是,这里的监听器和Button控件的监听器有所不同        genderGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {						@Override			public void onCheckedChanged(RadioGroup group, int checkedId) {				// TODO Auto-generated method stub				if(femaleButton.getId() == checkedId){					System.out.println("female");					Toast.makeText(RadioTest.this, "famle", Toast.LENGTH_SHORT).show();				}				else if(maleButton.getId() == checkedId)				{					System.out.println("male");					Toast.makeText(RadioTest.this, "male", Toast.LENGTH_LONG).show();				}			}		});

? ? * 复选框?

??????? - 布局文件如下

<CheckBox	android:id="@+id/swim" 	android:layout_width="wrap_content"   	android:layout_height="wrap_content"   	android:text="@string/swim"  	/><CheckBox	android:id="@+id/run" 	android:layout_width="wrap_content"   	android:layout_height="wrap_content"   	android:text="@string/run"  	/><CheckBox	android:id="@+id/read" 	android:layout_width="wrap_content"   	android:layout_height="wrap_content"   	android:text="@string/read"  	/>

??????? - java中操作,添加事件监听

        CheckBox swimBox = (CheckBox)findViewById(R.id.swim);         //为多选按钮添加监听器        swimBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {						@Override			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {				// TODO Auto-generated method stub				if(isChecked)				{					System.out.println("swim is checked");				}				else				{					System.out.println("swim is unchecked");				}			}		});

??? * 显示效果

?

6. Toast

??? * 用来显示提示信息,通常显示在屏幕底部,使用非常简单

Toast.makeText(RadioTest.this, "famle", Toast.LENGTH_SHORT).show();

?

7. 进度条(代码见progressbar)

??? * 水平进度条

?????? - 布局文件中配置

<!-- style="?android:attr/progressBarStyleHorizontal" 进度条水平展示 进度条默认最大值为100--><ProgressBar	android:id="@+id/firstBar"	style="?android:attr/progressBarStyleHorizontal"	android:layout_width="200px"	android:layout_height="wrap_content"	android:visibility="gone"	android:max="200"	/> 

??????? - java代码中操作进度条

	ProgressBar firstBar = (ProgressBar) findViewById(R.id.firstBar);	Button myButton = (Button) findViewById(R.id.myButton);	class ButtonListener implements OnClickListener {		@Override		public void onClick(View v) {			if (i == 0) {				//设置进度条处于可见状态				firstBar.setVisibility(View.VISIBLE);				firstBar.setMax(150);//设置进度条的最大值  方法二				secondBar.setVisibility(View.VISIBLE);			} else if (i < firstBar.getMax()) {				//设置水平进度条的当前值				firstBar.setProgress(i);				firstBar.setSecondaryProgress(i + 10);								//默认的进度条,不显示进度状态,因此,下面语句无意义				secondBar.setProgress(i);			} else {				//设置进度条处于不可见状态				firstBar.setVisibility(View.GONE);				secondBar.setVisibility(View.GONE);			}			i += 10;		}	}

??? * Android默认进度条 转圈显示

??????? - 布局文件中配置

<!-- style="?android:attr/progressBarStyle 转圈显示 -->	<ProgressBar	android:id="@+id/secondBar"	style="?android:attr/progressBarStyle"	android:layout_width="wrap_content"	android:layout_height="wrap_content"	android:visibility="gone"	/>

??? * 显示效果

?

8. 列表ListView(代码见progressbar)

??? * 布局文件中配置

	<LinearLayout android:id="@+id/listLinearLayout"    	android:orientation="vertical"    	android:layout_width="fill_parent"    	android:layout_height="fill_parent" >    	<ListView android:id="@id/android:list"    		android:layout_width="fill_parent"    		android:layout_height="wrap_content"    		android:drawSelectorOnTop="false"    		android:scrollbars="vertical"/>	</LinearLayout>

??? * java代码。需要实现ListActivity接口

package mars.progressbar;import java.util.ArrayList;import java.util.HashMap;import android.app.ListActivity;import android.os.Bundle;import android.view.View;import android.widget.ListView;import android.widget.SimpleAdapter;public class ListTest extends ListActivity {	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.list);		ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();		HashMap<String, String> map1 = new HashMap<String, String>();		HashMap<String, String> map2 = new HashMap<String, String>();		HashMap<String, String> map3 = new HashMap<String, String>();		map1.put("user_name", "zhangshan");		map1.put("user_ip", "192.168.1.1");		map2.put("user_name", "lisi");		map2.put("user_ip", "192.168.1.2");		map3.put("user_name", "wangwu");		map3.put("user_ip", "192.168.1.3");		list.add(map1);		list.add(map2);		list.add(map3);		//R.layout.user 布局文件		//new String[] { "user_name", "user_ip" } 指定列名,名字必须与map中的键名一致		//new int[] {  R.id.user_name,R.id.user_ip } 对应R.layout.user中的两个TextView		SimpleAdapter listAdapter = new SimpleAdapter(this, list,				R.layout.user, new String[] { "user_name", "user_ip" },				new int[] {  R.id.user_name,R.id.user_ip });//两个数组有顺序限制		setListAdapter(listAdapter);//将	}		//为ListView的每一行添加事件监听		@Override	protected void onListItemClick(ListView l, View v, int position, long id) {		super.onListItemClick(l, v, position, id);		System.out.println("id:" + id);		System.out.println("position:" + position);	}}

? ? * 显示效果

?

?

  相关解决方案