編輯:Android開發實例
最近遇到一個關於android軟鍵盤的問題。在ListView中每個Item中都有個EditText,在最後的幾個Item中,EditText第一次點擊界面還能向上彈出,正常顯示,
但第二次點擊時,軟件盤就把最後的幾個Item給正當住了。這樣很影響用戶體驗的。
其實解決的辦法只要想一下,我相信有經驗的開發人員就能夠想到,讓軟鍵盤在消失的時候讓相應Item中的EditText消失焦點clearFouce();但是有個關鍵的問題,
就是在獲得返回事件的時候,如果獲得的事件不對那就不會達到想要的效果。這個back時間一定要是自定Layout中的back事件才可以。
直接上代碼。
代碼如下:
<cn.test.systemSetting.MyLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/keyboardlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/main_bg"
android:orientation="vertical" >
<ListView
android:id="@+id/lv_data"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:cacheColorHint="#00000000"
android:transcriptMode="normal"
>
</ListView>
</cn.test.systemSetting.MyLayout>
自定義layout中所作的處理:
代碼如下:
package cn.test.systemSetting;
import com.********.R;
import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.LinearLayout;
/**
*
* 針對設備管理鍵盤事件的處理
* divid小碩
*
* **/
public class MyLayout extends LinearLayout {
private Context context;
public MyLayout(Context context) {
super(context);
// TODO Auto-generated constructor stub
this.context=context;
LayoutInflater.from(context).inflate(R.layout.device_manager, this);//此處所加載的layout就是上面的xml,即它的名字就是device_manager.xml
}
public MyLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
public MyLayout(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
// TODO Auto-generated method stub
if(context!=null){
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm.isActive() && event.getKeyCode() == KeyEvent.KEYCODE_BACK){
View view = DeviceManagerActivity.lv_data.getFocusedChild();
if(view!=null){
view.clearFocus();
}
}
}
return super.dispatchKeyEventPreIme(event);
}
}
主界面所采用的加載方式要是這樣的:
代碼如下:
public class DeviceManagerActivity extends Activity implements OnClickListener{
public static ListView lv_data;
static DevMgrAdapter adapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 1.全屏
requestWindowFeature(Window.FEATURE_NO_TITLE); // 無標題
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.setContentView(new MyLayout(this));
init();
}
}
微信平台開放後倒是挺火的,許多第三方應用都想試下,畢竟可以利用微信建立起來的關系鏈來拓展自己的應用還是挺不錯的,可以節約很多在社交方面的開銷,我最近由於實習需要也
此方法適用於所有母控件無法獲取焦點的情況 開發中很常見的一個問題,項目中的listview不僅僅是簡單的文字,常常需要自己定義listview,自己的Adapte
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩