源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

android基础教程之android的listview与edittext冲突解决方法

  • 时间:2021-10-13 17:22 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:android基础教程之android的listview与edittext冲突解决方法
最近遇到一个关于android软键盘的问题。在ListView中每个Item中都有个EditText,在最后的几个Item中,EditText第一次点击界面还能向上弹出,正常显示, 但第二次点击时,软件盘就把最后的几个Item给正当住了。这样很影响用户体验的。 其实解决的办法只要想一下,我相信有经验的开发人员就能够想到,让软键盘在消失的时候让相应Item中的EditText消失焦点clearFouce();但是有个关键的问题, 就是在获得返回事件的时候,如果获得的事件不对那就不会达到想要的效果。这个back时间一定要是自定Layout中的back事件才可以。 直接上代码。
[u]复制代码[/u] 代码如下:
<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中所作的处理:
[u]复制代码[/u] 代码如下:
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);     } }
主界面所采用的加载方式要是这样的:
[u]复制代码[/u] 代码如下:
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();     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部