类别:.Net相关知识 / 日期:2014-09-30 / 浏览:5763 / 评论:0
1.提出问题 因为公司的需要,最近一直都在做安卓的软件,因为本身是学.Net的,所以Mono成了我的首选,这次遇到的问题就是在登录界面输入用户名或者密码后,点击空白地方虚拟键盘不能自动的隐藏,之前做Windows App Store开发的时候就没有遇到过这个问题,经过一番Google后,找到了解决方法。
2.解决问题 首先看下我的界面
后台代码如下
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/svLogin" android:scrollbars="vertical" android:fadingEdge="vertical"> <LinearLayout android:orientation="vertical" android:gravity="center_horizontal" android:focusableInTouchMode="true" android:focusable="true" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text="用户登录" android:textAppearance="?android:attr/textAppearanceLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/titileView" android:layout_marginTop="200px" /> <EditText android:inputType="text" android:layout_width="500px" android:layout_height="wrap_content" android:id="@+id/etUserName" android:layout_marginTop="40px" android:text="张建国" /> <EditText android:inputType="textPassword" android:layout_width="500px" android:layout_height="wrap_content" android:id="@+id/etPassword" android:text="123456" /> <TextView android:textAppearance="?android:attr/textAppearanceSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/txtInfo" android:layout_marginTop="20px" /> <Button android:text="登录" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/btnLogin" android:layout_marginLeft="100px" android:layout_marginRight="100px" android:layout_marginTop="30px" /> </LinearLayout> </ScrollView>
这里首先需要一个继承了Activity和View.IOnTouchListener接口的一个类,类的代码如下。
public class LoginOnTouchListener : Activity, View.IOnTouchListener { protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); } public bool OnTouch(View v, MotionEvent e) { var userName = v.FindViewById<EditText>(Resource.Id.etUserName); var password = v.FindViewById<EditText>(Resource.Id.etPassword); if (userName.IsFocused) { userName.ClearFocus(); InputMethodManager imm = (InputMethodManager)v.Context.GetSystemService(InputMethodService); imm.HideSoftInputFromWindow(v.WindowToken, 0); } if (password.IsFocused) { password.ClearFocus(); InputMethodManager imm = (InputMethodManager)v.Context.GetSystemService(InputMethodService); imm.HideSoftInputFromWindow(v.WindowToken, 0); } return false; } }
然后Activity中去注册最外部的布局控件的SetOnTouchListener方法,具体的代码如下
public class LoginActivity : Activity { protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); var loginScrollView = FindViewById<ScrollView>(Resource.Id.svLogin); loginScrollView.SetOnTouchListener(new LoginOnTouchListener()); } }
这样就可以实现,点击屏幕空白处隐藏虚拟键盘并且取消焦点了。
发表评论 /