国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android 中使用EditText 點(diǎn)擊全選再次點(diǎn)擊取消全選功能

2019-12-12 04:23:00
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

最近在開(kāi)發(fā)瀏覽器碰到這么一個(gè)需求:點(diǎn)擊地址欄的時(shí)候,需要全選并調(diào)出鍵盤(pán),再次點(diǎn)擊就取消全選顯示光標(biāo)。點(diǎn)擊屏幕除地址欄其他位置時(shí),鍵盤(pán)隱藏,隱藏光標(biāo)。

大部分瀏覽器都是這樣的邏輯,這樣可以提高用戶體驗(yàn),減少操作。

代碼很簡(jiǎn)單,這里我簡(jiǎn)化了邏輯,頁(yè)面只有一個(gè)EditText。

布局文件如下:里面有兩個(gè)屬性需要注意

android:focusable="true"android:selectAllOnFocus="true"

完整布局文件

<?xml version="1.0" encoding="utf-8"?><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="com.example.edittexttest.MainActivity">  <EditText    android:id="@+id/edit"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:focusable="true"    android:selectAllOnFocus="true"    /></RelativeLayout>

**mainactivity.java

package com.example.edittexttest;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.inputmethod.InputMethodManager;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends AppCompatActivity {  private EditText editText;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    editText = (EditText) findViewById(R.id.edit);    editText.setText("click to select all");    editText.clearFocus();    editText.setFocusableInTouchMode(false);    editText.setOnTouchListener(new View.OnTouchListener() {      @Override      public boolean onTouch(View view, MotionEvent motionEvent) {        if (motionEvent.getAction() == MotionEvent.ACTION_UP) {          editText.setFocusableInTouchMode(true);          editText.requestFocus();          editText.setText("click to select all");          editText.selectAll();        }        return false;      }    });  }  @Override  public boolean dispatchTouchEvent(MotionEvent ev) {    if (ev.getAction() == MotionEvent.ACTION_DOWN) {      View v = getCurrentFocus();      if (isShouldHideInput(v, ev)) {        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);        if (imm.isActive()) {          imm.hideSoftInputFromWindow(v.getWindowToken(), 0);        }      }      return super.dispatchTouchEvent(ev);    }    // Necessary    if (getWindow().superDispatchTouchEvent(ev)) {      return true;    }    editText.clearFocus();    editText.setFocusableInTouchMode(false);    return onTouchEvent(ev);  }  public boolean isShouldHideInput(View v, MotionEvent event) {    if (v != null && (v instanceof EditText)) {      int[] leftTop = { 0, 0 };      //get location of TextView      v.getLocationInWindow(leftTop);      int left = leftTop[0];      int top = leftTop[1];      int bottom = top + v.getHeight();      int right = left + v.getWidth();      if (event.getX() > left && event.getX() < right          && event.getY() > top && event.getY() < bottom) {        return false;      } else {        return true;      }    }    return false;  }}

需要注意兩個(gè)代碼段

editText.setFocusableInTouchMode(true);editText.requestFocus();

以上所述是小編給大家介紹的Android 中使用EditText 點(diǎn)擊全選再次點(diǎn)擊取消全選功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 芷江| 枣庄市| 澄城县| 曲靖市| 丹江口市| 葵青区| 阳曲县| 恩施市| 同德县| 团风县| 旌德县| 焦作市| 郁南县| 中卫市| 奇台县| 屏东市| 九龙城区| 万盛区| 灌阳县| 石景山区| 兴城市| 澳门| 茌平县| 石楼县| 兴文县| 铅山县| 姚安县| 丰镇市| 连江县| 惠东县| 龙山县| 石屏县| 都安| 德阳市| 喜德县| 西昌市| 贞丰县| 石棉县| 乌兰察布市| 兰西县| 宜黄县|