2.Android基础:常见控件----->EditText、Button

来源:互联网 发布:英文淘宝店名化妆品 编辑:程序博客网 时间:2024/06/05 03:15

1.EditText控件常用与输入数据,Button控件常用于响应用户点击操作

2.EditText类是TextView的子类,继承了在设置XML文件中的属性和方法。


3.在XML布局文件中,可以设置一些属性,下面有一个不同于TextView中的一个属性:inputType

inputType属性设置是输入时启动虚拟键盘的风格

android:inputType="none":不作为任何设置风格

android:inputType="text":输入普通字符

android:inputType="number" 输入数字格式

android:inputType="textPassword" 输入密码格式

android:inputType="phone" 输入拨号键盘


4.EditText控件重要的方法

getText方法

功能:获取输入框中输入的内容

返回值:输入的字符串内容


5.Button控件重要的方法

setOnClickListener方法

功能:实时监听点击,回应点击事件操作


以下是一个简单的例子

这个是xml文件配置

<LinearLayout 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"    tools:context=".MainActivity"     android:orientation="vertical"    >    <EditText        android:id="@+id/editText1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world"         android:inputType="phone"        />     <LinearLayout        android:id="@+id/ll_conversation_edit_menu"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="horizontal"        android:paddingLeft="30dp"        android:paddingRight="30dp"        android:paddingTop="5dp"         >    <Button         android:id="@+id/btn1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/editview1"         />        <Button         android:id="@+id/btn2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/editview2"         />    </LinearLayout>        <TextView         android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"                /></LinearLayout>

这个类是一个抽象类,把要实现的方法抽象出来,好处在于可以实现多次复用

实现OncliListener接口用于事件的侦听

public abstract class BaseActivity extends Activity implements OnClickListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();initListener();initData();}public abstract View initView(); //填充布局public abstract void initListener(); //侦听public abstract void initData(); //显示内容public abstract void processClick(View v); //实现侦听//按钮监听@Overridepublic void onClick(View v) {processClick(v);}}

这个类是具体执行显示内容

public class MainActivity extends BaseActivity {private EditText edittext;private TextView textview;private Button btn1;private Button btn2;//填充布局@Overridepublic View initView() {//使用资源IDedittext = (EditText) findViewById(R.id.editText1);btn1 = (Button) findViewById(R.id.btn1);btn2 = (Button) findViewById(R.id.btn2);textview = (TextView) findViewById(R.id.textView1);return textview;}//侦听@Overridepublic void initListener() {btn1.setOnClickListener(this);btn2.setOnClickListener(this);}//内容显示@Overridepublic void initData() {String str = edittext.getText().toString();textview.setText(str); //实现输入框文本显示}//实现侦听@Overridepublic void processClick(View v) {switch (v.getId()) {case R.id.btn1:initData();break;case R.id.btn2:System.exit(0); //退出界面break;}}}

6.EidText输入框中限制输入几个字符问题

1.第一种方式:在xml文件中添加EditText属性maxLength

2.第一种方式:使用InputFilter中LengthFilter方法 


以下举个例子,进行阐述

这个是xml布局文件

<LinearLayout 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"    tools:context=".MainActivity"     android:orientation="vertical"    >    <!-- 在xml文件中直接设置限制输入几个字符 -->    <EditText        android:id="@+id/editText1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"         android:maxLength="10"        android:inputType="phone"/>         <EditText        android:id="@+id/editText2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"         android:inputType="phone"/></LinearLayout>


这个类是测试类

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);EditText editText = (EditText) findViewById(R.id.editText2);  editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});  }}

第三种方式:实现对TextWatcher接口

这个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=".MainActivity" >    <EditText        android:id="@+id/editText"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:inputType="phone" /></RelativeLayout>
这个类是实现对TextWatcher接口

public class MaxLengthWatcher implements TextWatcher {private int maxLen = 0;private EditText editText = null;public MaxLengthWatcher(int maxLen, EditText editText) {  this.maxLen = maxLen;  this.editText = editText;      <span style="white-space:pre"></span>}  //文本更改之前调用@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {// TODO Auto-generated method stub}//文本被更改时调用@Overridepublic void afterTextChanged(Editable s) {// TODO Auto-generated method stub}//文本改变时调用@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {// TODO Auto-generated method stubEditable editable = editText.getText();          int len = editable.length();                    if(len > maxLen)          {              int selEndIndex = Selection.getSelectionEnd(editable);              String str = editable.toString();              //截取新字符串              String newStr = str.substring(0,maxLen);              editText.setText(newStr);              editable = editText.getText();                            //新字符串的长度              int newLen = editable.length();              //旧光标位置超过字符串长度              if(selEndIndex > newLen)              {                  selEndIndex = editable.length();              }              //设置新光标所在的位置              Selection.setSelection(editable, selEndIndex);          }      }}
这个类是测试类
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); EditText editText = (EditText) findViewById(R.id.editText);      editText.addTextChangedListener(new MaxLengthWatcher(10, editText));  }}

0 0
原创粉丝点击