2013.7.24 监听Back键,EditText 不自动获取焦点,EditText 添加省略号,WebView loadUrl时 实时显示Loading框

1,通用的做法:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
       Toast.makeText(android123.this,"Android开发网Back键测试",1).show();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

android 2.0 以后:

@Override
public void onBackPressed() {

}


2,今天认识到:当定义一个有参数的方法时,在方法实现上,就有必要对参数是否合法进行判断。这样会防止一些bug的出现。

3,EditText 不自动获取焦点

在其父控件上设置:

       android:focusable="true"
       android:focusableInTouchMode="true"

4,EditText setText的长度过长时,无法在末尾加上省略号,估计是系统的一个bug。可以通过给EditText 

et.setOnFocusChangeListener()来实现没有焦点时添加省略号,拥有焦点时全部显示

et.setOnFocusChangeListener(new OnFocusChangeListener() {
			
			@Override
			public void onFocusChange(View v, boolean hasFocus) {
				
				int strLen = 10;
				String ss = "哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈";
				String dotStr = "...";
				if(!hasFocus){
					if(ss.length() > strLen){
						int end = strLen-dotStr.length();
						et.setText(ss.substring(0, end)+"...");
					}else{
						et.setText(ss);
					}
				}else{
					et.setText(ss);
				}
				
				CharSequence text = et.getText();
				if (text instanceof Spannable) {
						Spannable spanText = (Spannable)text;
						Selection.setSelection(spanText, text.length());
				}
			}
		});


这段代码可以让EditText有焦点时的光标自动定位到末尾
CharSequence text = et.getText();
				if (text instanceof Spannable) {
						Spannable spanText = (Spannable)text;
						Selection.setSelection(spanText, text.length());
				}

5,webview 在加载前显示Loading框,加载完毕后去掉。可以这么干:一,在WebViewClient onPageStarted()中显示,在onPageFinished()中消失。二:起一个Timer,监视wv.getProgress(),当其值等于100时,去掉Loading。

Demo后发现,load一个url时可能会多次调用onPageStartd()和onPageFinished(),所以会多次显示和去除Loading框。用第二种方法判断progress的方法就不会多次显示了!

参考 http://blog.csdn.net/WOSHICAIXIANFENG/article/details/6778879#comments

你可能感兴趣的:(2013.7.24 监听Back键,EditText 不自动获取焦点,EditText 添加省略号,WebView loadUrl时 实时显示Loading框)