我打算在其中显示一个带有EditText的弹出窗口,一旦显示键盘就可以自动激活:
public void showPopup(View view) // a button invoke
{
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View content = inflater.inflate(R.layout.popup, null);
PopupWindow pw = new PopupWindow(content, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, true);
pw.setBackgroundDrawable(new BitmapDrawable());
pw.showAtLocation(view, Gravity.TOP, 0, 0);
EditText editText = (EditText) findViewById(R.id.edit_message);
(new Handler()).post(new Runnable() {
public void run() {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);
}
});
}
和popup.xml是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText android:id="@+id/edit_message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Hello Android!!"
android:hint="Filling in it!!"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:focusable="true"
android:focusableInTouchMode="true"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go!"
/>
</LinearLayout>
它在纵向模式下运行良好,但在添加代码后不在横向模式下运行:
protected void onResume() {
if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
可以请求任何人提供一些解决方案吗?
答案 0 :(得分:1)
在popup.xml文件中编辑
<LinearLayout............
.....
android:focusable="true"
android:focusableInTouchMode="true" ...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:focusable="true"
android:focusableInTouchMode="true"
>
<EditText android:id="@+id/edit_message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Hello Android!!"
android:hint="Filling in it!!"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:focusable="true"
android:focusableInTouchMode="true"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go!"
/>
</LinearLayout>
答案 1 :(得分:0)
在EditText requestFocus
中添加xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText android:id="@+id/edit_message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Hello Android!!"
android:hint="Filling in it!!"
android:layout_weight="1"
android:selectAllOnFocus="true"
android:focusable="true"
android:focusableInTouchMode="true"
><requestFocus/></EditText>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go!"
/>
</LinearLayout>