編輯:關於Android編程
前言
最近做公司項目的時候,經常會遇到一個問題,就是我為某個控件如EditText設置requestfocus()的時候不管用,比如說登陸的時候,我判斷下用戶輸入的密碼,如果正確就登陸,錯誤就提示密碼錯誤,並且輸入框獲取焦點,但是實際中確不起作用
package com.example.hfs.requestfocusdemo;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText mUserName,mPassWord;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mUserName= (EditText) this.findViewById(R.id.et_username);
mPassWord= (EditText) this.findViewById(R.id.et_password);
mPassWord.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (!"123456".equals(mPassWord.getText().toString())){
Toast.makeText(this,"密碼錯誤,請重新輸入",Toast.LENGTH_SHORT).show();
mPassWord.requestFocus();
}else{
startActivity(new Intent(this,MainActivity.class));
Toast.makeText(this,"登陸成功",Toast.LENGTH_SHORT).show();
finish();
}
}
}
原因
查資料分析了一下,可能是以下問題:
Android加載刷新UI的時候,是從左到右,從上到下的順序,正在加載的過程中,如果此時requestFocus(),的話,有可能此時還沒把整個界面刷新好,導致requestFocus無效。
解決辦法
找到原因後就有解決辦法了,給他個延遲時間:
mPassWord.postDelayed(new Runnable() {
@Override
public void run() {
mPassWord.requestFocus();
}
}, 500);
這樣就解決了這個問題了。
PS:requestFocus() 無效的原因
setVisible(true); person.requestFocus();
也就是說requestFocus()應該放在setVisible(true)的後面。
以上所述是小編給大家介紹的Android開發中requestfocus()無效的原因及解決辦法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對本站網站的支持!
android 頭行列可固定的表格制作
1、概述在android中我們平日經常用listview、gridview控件來制作數據不固定的表格,一般都是頭列表格頭固定,底下listview展示可變數據,然而在工作
Android 側滑菜單的實現
Android 側滑菜單的實現,參考網上的代碼,實現側滑菜單。最重要的是這個動畫類UgcAnimations,如何使用動畫類來側滑的封裝FlipperLayout。&nb
Android布局之View.measure()動態量取高度並設置布局--(例:動態計算評論高度並顯示)
需求是這樣的:在應用程序的詳情介紹時,有評論的版塊,該頁評論最多顯示5條,而每條最大字數是140個字符,每條評論可能根據字數不同,所占據的高度也不一樣,如有的是1行,有的
布局與控件(八)-ListView知多少(下)ChoiceMode詳解
9.4 ListView的Choice ModeListView本身帶有單選和多選功能,也就是說在單選模式下,它能夠記住當前選中的唯一的列表項;在多選模式下,它能夠記住目