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