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());
【未完待续...】