ポップアップウィンドウ(PopupWindow)
PopupWindowを表示して、EditTextでデータを入力する方法です。
まず、PopupWindowのレイアウトを決めます。
- category_setting_popup.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editTextCategorySettingPopUp"
android:inputType="text" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/button_popup_register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_alignParentLeft="true"
android:text="@string/button_register" />
<Button
android:id="@+id/button_popup_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_alignParentRight="true"
android:text="@string/button_cancel" />
</RelativeLayout>
</LinearLayout>
次にpopupを表示するソースコードです。
private class onClickCategory_1 implements View.OnClickListener {
public void onClick(View v) {
mPopupWindow = new PopupWindow(getActivity());
// レイアウト設定
final View popupView = getActivity().getLayoutInflater().inflate(R.layout.category_setting_popup, null);
popupView.findViewById(R.id.button_popup_register).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mPopupWindow.isShowing()) {
EditText edText = (EditText) popupView.findViewById(R.id.editTextCategorySettingPopUp);
String category = edText.getText().toString();
Button button = (Button) getView().findViewById(R.id.buttonSettingCategory_1);
button.setText(category);
mPopupWindow.dismiss();
}
}
});
popupView.findViewById(R.id.button_popup_cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mPopupWindow.isShowing()) {
mPopupWindow.dismiss();
}
}
});
mPopupWindow.setContentView(popupView);
// タップ時に他のViewでキャッチされないための設定
mPopupWindow.setOutsideTouchable(true);
mPopupWindow.setFocusable(true);
// 表示サイズの設定 今回は幅200dp
float width = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 200, getResources().getDisplayMetrics());
// mPopupWindow.setWindowLayoutMode((int) width, WindowManager.LayoutParams.WRAP_CONTENT);
mPopupWindow.setWidth((int) width);
mPopupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
// 画面(150, 300)に表示
mPopupWindow.showAtLocation(popupView.findViewById(R.id.button_popup_register), Gravity.NO_GRAVITY, 150, 300);
Button button = (Button) getView().findViewById(R.id.buttonSettingCategory_1);
String category = button.getText().toString();
if (category != null) {
EditText edText = (EditText) popupView.findViewById(R.id.editTextCategorySettingPopUp);
edText.setText(category);
}
}
}