您的位置:首页 > 移动开发 > Android开发

[Android常用控件整理]

2015-04-02 16:47 351 查看
TextView:显示文本框控件

常用属性:

android:id—控件的id

android:layout_width—控件的宽度

android:layout_height—控件的高度

android:text—文本内容

android:textSize—文本大小

android:textColor—文本颜色

android:background—控件背景



EditText:输入文本框

常用属性:

android:id—控件的id

android:layout_width—控件的宽度

android:layout_height—控件的高度

android:text—文本内容

android:textSize—文本大小

android:textColor—文本颜色

android:background—控件背景



android:hint—输入提示文本

android:inputType—输入文本类型



android:layout_width 和android:layout_height 的属性值:

wrap_content:包裹实际文本内容

match_parent:当前控件铺满父类容器(2.3api之后添加的一个属性值)

fill_parent:当前控件铺满父类容器(在2.3api之前的一个属性值)



android:textSize的属性值:

android:textSize=”28sp”(文字一般用sp为单位)



android:textColor的属性值:

android:textColor=”#000000”(用颜色的十六进制表示)



android:text 和 android:hint同时存在时,只显示text内容,不显示提示内容。



代码实例:

<TextView
        android:id="@+id/name_textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="姓名:"
        android:textSize="28sp"
        android:textColor="#000000"
        />

    <EditText
        android:id="@+id/name_editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="70dp"
        android:hint="请输入姓名,如:张飞" >

        <requestFocus />
</EditText>


效果图如下:



ImageView:是显示图片的一个控件

常用属性:

android:src=”@drawable/ic_launcher”—ImageView的内容图像

android:background=”@drawble/ic_launcher”—ImageView背景图片

android:background=”#00ff00”—ImageView的RGB颜色



android:src 和 android:background设置控件图片,后者会被拉伸。

在布局上拖一个ImageView控件,如图所示,这里我们选工程带的图片。



如图:



代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.imageviewtest.MainActivity"
    tools:ignore="MergeRootFrame" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"
        android:background="#ccc" />
    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/ic_launcher" />
    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:background="#0f0f0f" />

</LinearLayout>


其中在LinearLayout布局中,android:orientation="vertical"设置垂直排列。



Button 和 ImageButton

Button:按钮

常用属性:

android:id=”@+id/button1”

android:layout_width=”match_parent”

android:layout_height=”wrap_content”

android:text=”Button”



ImageButton:图片按钮

常用属性:

android:id=”@+id/imageButton1”

android:layout_width=”match_parent”

android:layout_height=”wrap_content”

android:src=”@drawableabc_ab_share_pack_holo_light”



共有的特性:都可以作为一个按钮产生点击事件

不同点:

1. Button有text的属性,ImageButton没有

2. ImageButton有src属性,Button没有

产生明显的点击效果。

实例代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.buttonandimagebutton.MainActivity"
    tools:ignore="MergeRootFrame" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/button_name" />

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

</LinearLayout>


效果图:



可以在ImageButton控件中添加background属性,可以与src同时存在。

补充:这里Button控件的text属性,是在value/string.xml文件中声明的,这种方式是推荐使用的。

总结:

1.Button:可以设置文本内容一个按钮

2.ImageButton:不可以设置文本内容,background以及sre添加一个image,当前图片可以做一个有文本内容图片



onClick事件

1. Button和ImageButton都拥有一个onClick事件。
通过自身的.setOnClickListener(OnClickListener)方法添加点击事件。
2. 所以的控件都有一个onClick的事件,不仅仅Button和ImageButton拥有。
3. 通过点击事件的监听可以实现点击按钮之后要发生什么动作。

监听事件实现的三种写法
1. 匿名内部类的实现。
a. 初始化当前所需要控件,定义变量,如:
private Button loginButton;
并赋值:
loginButton =(Button)findViewById(R.id.button1);
这里findViewById(R.id.button1)的返回值是view对象,必须向下转型。
R.id.button1是在gen/R文件中生成的唯一的id号,我们通过android:id属性来指定。
b. 设置Button的监听器。通过监听器实现我们点击Button要操作的事情。
loginButton.setOnClickListener(newOnClickListener() {
@Override
public void onClick(View arg0) {
//在当前onClick()方法中监听点击Button的动作,如:
System.out.println(“我的Button被点击了”);//在LogCat输出语句
}
});
代码如下:
private Button loginButton;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		loginButton = (Button)findViewById(R.id.button1);
		loginButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				//在当前onClick()方法中监听点击Button的动作,如:
				System.out.println("我的Button被点击了");//在LogCat输出语句
		}
		});
	}

效果图:



1. 独立类的实现。
点击事件外部类的写法和作用:有多个按钮要实现同一个功能,可以在父类的onClick事件实现相同的这个功能,在自身onClick事件实现特有功能。
a. 定义类:
class MyOnClickListener implements OnClickListener {
@Override
public voidonClick(View v) {
Log.i(“tag”, “父类的onClick事件”);
//v.setAlpha(0.5f);//设置按钮透明度
}
}
b. button1.setOnClickListener(newMyOnClickListener() {
@Override
public void onClick(View v) {
super.onClick(v);
//功能
Toast.makeText(MainActivity.this,“button1要执行的逻辑”,1).show();
}
});
button2.setOnClickListener(new MyOnClickListener() {
@Override
public void onClick(View v) {
super.onClick(v);
//功能
Toast.makeText(MainActivity.this,“button2要执行的逻辑”,1).show();
}
});
代码实现:

在默认布局文件中代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.buttonoutclassonclicklistener.MainActivity"
    tools:ignore="MergeRootFrame" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="按钮2" />

</LinearLayout>


在MainActivity.java中代码如下:
package com.example.buttonoutclassonclicklistener;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;

//实现的外部类
class MyOnClickListener implements OnClickListener {
	@Override
	public void onClick(View v) {
		Log.i("tag", "父类的onClick事件");
		v.setAlpha(0.5f);//设置按钮透明度
	}
}

public class MainActivity extends ActionBarActivity {
	
	private Button button1;
	private Button button2;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//代码1:
		button1 = (Button) findViewById(R.id.button1);
		button2 = (Button) findViewById(R.id.button2);
		button1.setOnClickListener(new MyOnClickListener() {
			@Override
			public void onClick(View v) {
				super.onClick(v);
				//功能
				Toast.makeText(MainActivity.this, "button1要执行的逻辑",1).show();
			}
		});
		button2.setOnClickListener(new MyOnClickListener() {
			@Override
			public void onClick(View v) {
				super.onClick(v);
				//功能
				Toast.makeText(MainActivity.this, "button2要执行的逻辑",1).show();
			}
		});

		
		if (savedInstanceState == null) {
			getSupportFragmentManager().beginTransaction()
					.add(R.id.container, new PlaceholderFragment()).commit();
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

	/**
	 * A placeholder fragment containing a simple view.
	 */
	public static class PlaceholderFragment extends Fragment {

		public PlaceholderFragment() {
		}

		@Override
		public View onCreateView(LayoutInflater inflater, ViewGroup container,
				Bundle savedInstanceState) {
			View rootView = inflater.inflate(R.layout.fragment_main, container,
					false);
			return rootView;
		}
	}

}


效果图:



1. 实现接口的方式实现。
button.setOnClickListener(this);
实现接口:
@Override
public void onClick(View v) {
Log.i(“tag”, “第三种方式实现”);
}
package com.example.button3;

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;

public class MainActivity extends Activity implements OnClickListener {
	private Button button1;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		button1 = (Button) findViewById(R.id.button1);
		button1.setOnClickListener(this);
		
		if (savedInstanceState == null) {
			getFragmentManager().beginTransaction()
					.add(R.id.container, new PlaceholderFragment()).commit();
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

	/**
	 * A placeholder fragment containing a simple view.
	 */
	public static class PlaceholderFragment extends Fragment {

		public PlaceholderFragment() {
		}

		@Override
		public View onCreateView(LayoutInflater inflater, ViewGroup container,
				Bundle savedInstanceState) {
			View rootView = inflater.inflate(R.layout.fragment_main, container,
					false);
			return rootView;
		}
	}

	@Override
	public void onClick(View arg0) {
		Log.i("tag", "第三种方式实现");
	}

}


AutoCompleteTextView:动态匹配输入的内容,如百度搜索引擎的提示信息
独特属性:
android:completionThreshold=”2”—设置输入多少字符时自动匹配

示例代码:
<AutoCompleteTextView
        android:id="@+id/autoCompleteTextView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="36dp"
        android:ems="10"
        android:completionThreshold="3"
        android:hint="请输入你要搜索的关键词" >

        <requestFocus />
</AutoCompleteTextView>


public class MainActivity extends Activity {

	private AutoCompleteTextView acTextView;
	//第三步:初始化数据源---这数据源去匹配文本框输入的内容
	private String[] res = {"beijing1", "beijing2", "beijing3", "shanghai1", "shanghai2"};
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		//第一步:初始化控件
		acTextView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
		//第二步:需要一个适配器
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, res);
		
		//第四步:将adpter与当前AutoCompleteTextView绑定
		acTextView.setAdapter(adapter);
}


MultiAutoCompleteTextView控件:
功能:可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配,可用在发短信,发邮件时选择联系人这种类型当中。
独特属性:
android:completionThreshold=”2”– 设置输入多少字符时自动匹配
设置分隔符:
mtxt.setTokenizer(newMultiAutoCompleteTextView.CommaTokenizer());
【未完待续...】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: