【Android常用控件】EditText常用属性【三】:EditText选取操作

话不多说,直接上码:

activity_main.xml


<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <EditText
            android:id="@+id/edit"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:hint="请在这里输入文本..."
            android:inputType="text" />

        <Button
            android:id="@+id/getAll"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:layout_below="@+id/edit"
            android:text="获取输入框中的值" />

        <Button
            android:id="@+id/getSelect"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:layout_below="@+id/getAll"
            android:text="获取被选中的文本" />

        <Button
            android:id="@+id/selectAll"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:layout_below="@+id/getSelect"
            android:text="全选" />

        <Button
            android:id="@+id/selectFrom"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:layout_below="@+id/selectAll"
            android:text="从第几个字符开始选?" />

        <EditText
            android:id="@+id/fromNumber"
            android:layout_width="fill_parent"
            android:layout_height="40dp"
            android:layout_below="@+id/selectAll"
            android:layout_toRightOf="@+id/selectFrom"
           	android:inputType="date"
            android:hint="在这里输入.." />
        
        <TextView
            android:id="@+id/tip"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/selectFrom"
            android:text="提示:焦点必须放在输入框才能够选中"
            />
    </RelativeLayout>

</ScrollView>

MainActivity.java


package com.wirelessqa.edittext;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.Selection;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

/**
 * EditText选取操作
 * From:http://www.csdn.net/blog/wirelessqa
 * @author bixiaopeng 2013-2-3 下午9:41:57
 */
public class MainActivity extends Activity {

    private EditText edit            = null;
    private EditText edit_selectFrom = null;
    private Button   btn_getEdit     = null;
    private Button   btn_getSelect   = null;
    private Button   btn_selectAll   = null;
    private Button   btn_selectFrom  = null;

    /* (non-Javadoc)
     * @see android.app.Activity#onCreate(android.os.Bundle)
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        edit = (EditText) findViewById(R.id.edit);
        edit_selectFrom = (EditText) findViewById(R.id.fromNumber);
        btn_getEdit = (Button) findViewById(R.id.getAll);
        btn_getSelect = (Button) findViewById(R.id.getSelect);
        btn_selectAll = (Button) findViewById(R.id.selectAll);
        btn_selectFrom = (Button) findViewById(R.id.selectFrom);
        
        edit.setText("老毕的博客:http://www.csdn.net/blog/wirelessqa");
        //监听获取输入框中的所有文本
        btn_getEdit.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                String editText = edit.getText().toString();
                Toast.makeText(MainActivity.this, editText, Toast.LENGTH_LONG).show();
            }
        });
        //监听获取选中的文本
        btn_getSelect.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                int startSelect = edit.getSelectionStart();
                int endSelect = edit.getSelectionEnd();
                String selectText = edit.getText().subSequence(startSelect, endSelect).toString();
                Toast.makeText(MainActivity.this, selectText, Toast.LENGTH_LONG).show();
            }
        });
        //全选
        btn_selectAll.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                setEditFocus(edit);
                edit.selectAll();  
                
            }
        });
        //从第几个字符开始选择
        btn_selectFrom.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                //从输入框中获取值
                int fromNumber = 0;
                try {
                    fromNumber = Integer.valueOf(edit_selectFrom.getText().toString());
                } catch (Exception e) {
                    e.printStackTrace();
                    fromNumber = 0;
                    Toast.makeText(MainActivity.this, "请输入大于0的数字", Toast.LENGTH_SHORT).show();
                }
                int length = edit.getText().length()-1;//输入框中文本的长度
                if(fromNumber !=0 && fromNumber<length){
                    Editable editable = edit.getText();
                    setEditFocus(edit);
                    Selection.setSelection(editable,fromNumber,editable.length());
                }else{
                    Toast.makeText(MainActivity.this, "输入的数字要小于"+length, Toast.LENGTH_SHORT).show();
                }
               
            }
        });
        
    }
    
    /**
     * 将焦点放在输入框中
     * 如果想要选中输入框中的文本必须要将焦点放在输入框中
     * 如果想要焦点在输入框中必须设置下面三个方法
     * @param editText
     */
    private void setEditFocus(EditText editText){
        editText.setFocusable(true);
        editText.setFocusableInTouchMode(true);
        editText.requestFocus();
    }

}

本文链接:http://blog.csdn.net/wirelessqa/article/details/8567702

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:http://blog.csdn.net/wirelessqa,谢谢!^^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕小烦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值