edittext 选中焦点在最后_安卓开发中EditText的焦点改变处理(获取焦点和失去焦点交互变化)...
在安卓項目開發中,我們經常會遇到一些對EditText的處理問題,包括對EditText的焦點的改變,我們需要結合實際情況對其進行獲得焦點,打開輸入法和失去焦點,關閉輸入法的交互操作。
我在這里介紹一種簡單的處理方式,希望在看了我的博文之后對您的需求有所幫助。
上圖,首次進入界面
上圖,點擊輸入框
上圖,點擊確定按鈕
首先,編寫布局文件:
layout_edittext_focus.xml
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"?>
android:id="@+id/focus_linear_root"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="50dp"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal"
android:paddingBottom="5dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"?>
android:id="@+id/focus_editText_input"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:hint="請輸入"
android:paddingLeft="10dp"
android:singleLine="true"?/>
android:id="@+id/focus_textView_ok"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="15dp"
android:layout_marginRight="5dp"
android:gravity="center"
android:text="確定"
android:textSize="18sp"?/>
android:id="@+id/focus_textView_explain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/focus_linear_root"
android:padding="20dp"
android:textSize="11sp"?/>
核心代碼:
給EditText所在的父類布局添加如下屬性:
android:focusable="true"
android:focusableInTouchMode="true"
將焦點轉移到EditText的父類布局上,EditText在初始化的時候就不會獲取到焦點
然后,編寫java代碼:
EditTextFocusActivity.java
package?com.example.listdelectdemo;
import?android.os.Bundle;
import?android.app.Activity;
import?android.content.Context;
import?android.view.View;
import?android.view.View.OnClickListener;
import?android.view.inputmethod.InputMethodManager;
import?android.widget.EditText;
import?android.widget.TextView;
/**
*?EditText焦點處理頁
*/
public?class?EditTextFocusActivity?extends?Activity?implements?OnClickListener?{
/**
*?輸入框
*/
private?EditText?focus_editText_input;
/**
*?確定按鈕
*/
private?TextView?focus_textView_ok;
/**
*?說明
*/
private?TextView?focus_textView_explain;
/**
*?輸入法管理器
*/
private?InputMethodManager?mInputMethodManager;
@Override
protected?void?onCreate(Bundle?savedInstanceState)?{
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_edittext_focus);
initUtil();
initView();
}
/**
*?初始化必須工具
*/
private?void?initUtil()?{
//初始化輸入法
mInputMethodManager?=?(InputMethodManager)?getSystemService(Context.INPUT_METHOD_SERVICE);
}
/**
*?控件初始化
*/
private?void?initView()?{
focus_editText_input?=?(EditText)?findViewById(R.id.focus_editText_input);
focus_editText_input.setOnClickListener(this);
focus_textView_ok?=?(TextView)?findViewById(R.id.focus_textView_ok);
focus_textView_ok.setOnClickListener(this);
focus_textView_explain?=?(TextView)?findViewById(R.id.focus_textView_explain);
String?explain?=?"說明:\n\n1.首次進入界面時,EditText不會獲取焦點,沒有光標\n\n"
+?"2.當點擊EditText時,EditText重新獲取焦點,光標出現,并吊起輸入法\n\n"
+?"3.輸入完成后,點擊確定,EditText失去焦點,失去光標并關閉輸入法\n\n"
+?"4.重新點擊EditText時,即可重復操作";
focus_textView_explain.setText(explain);
}
@Override
public?void?onClick(View?v)?{
switch?(v.getId())?{
case?R.id.focus_editText_input://輸入框
focus_editText_input.setFocusable(true);//設置輸入框可聚集
focus_editText_input.setFocusableInTouchMode(true);//設置觸摸聚焦
focus_editText_input.requestFocus();//請求焦點
focus_editText_input.findFocus();//獲取焦點
mInputMethodManager.showSoftInput(focus_editText_input,?InputMethodManager.SHOW_FORCED);//?顯示輸入法
break;
case?R.id.focus_textView_ok://確定按鈕
focus_editText_input.setFocusable(false);//設置輸入框不可聚焦,即失去焦點和光標
if?(mInputMethodManager.isActive())?{
mInputMethodManager.hideSoftInputFromWindow(focus_editText_input.getWindowToken(),?0);//?隱藏輸入法
}
break;
}
}
}
核心代碼:
在EditText的點擊事件中添加如下代碼:
focus_editText_input.setFocusable(true);//設置輸入框可聚集
focus_editText_input.setFocusableInTouchMode(true);//設置觸摸聚焦
focus_editText_input.requestFocus();//請求焦點
focus_editText_input.findFocus();//獲取焦點
作用在于讓EditText在點擊的時候獲取到焦點。
然后對輸入法做顯示處理。
mInputMethodManager.showSoftInput(focus_editText_input,?InputMethodManager.SHOW_FORCED);//?顯示輸入法
要使EditText失去焦點,只需要在其他的監聽事件中添加如下代碼,設置不可聚集,關閉輸入法即可:
focus_editText_input.setFocusable(false);//設置輸入框不可聚焦,即失去焦點和光標
if?(mInputMethodManager.isActive())?{
mInputMethodManager.hideSoftInputFromWindow(focus_editText_input.getWindowToken(),?0);//?隱藏輸入法
}
這就是一個簡單EditText焦點改變處理方法。
文章中存在的某些不足之處,還望提出指導性意見。
總結
以上是生活随笔為你收集整理的edittext 选中焦点在最后_安卓开发中EditText的焦点改变处理(获取焦点和失去焦点交互变化)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dos攻击mysql_浅谈DOS与DDO
- 下一篇: java arrays.equals_J