シンプルなポップアップウィンドウを作成しようとしています。しかし、私が作るたびに、それは非常に小さくなります...そして、私が望んでいる長さではありません。これは、ポップアップの外観です。
ポップアップのレイアウトは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/popup_element"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:background="#444444"
Android:padding="10px"
Android:orientation="vertical">
<TextView
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:text="Transfering data"
Android:textColor="@color/white"/>
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center_vertical"
Android:text="Status"
Android:textColor="@color/white"/>
<TextView Android:id="@+id/server_status_text"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Awaiting answer..."
Android:paddingLeft="10sp"
Android:textColor="@color/white"/>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="horizontal"
Android:gravity="center_horizontal|bottom">
<Button Android:id="@+id/end_data_send_button"
Android:layout_width="100dp"
Android:layout_height="100dp"
Android:drawablePadding="3sp"
Android:layout_centerHorizontal="true"
Android:text="Cancel" />
</LinearLayout>
</LinearLayout>
ここに私のJavaコード:
private PopupWindow pw;
private void bindActivity() {
fabButton = (ImageButton) findViewById(R.id.activity_profileView_FAB);
fabButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
initiatePopupWindow();
}
});
}
private void initiatePopupWindow() {
try {
//We need to get the instance of the LayoutInflater, use the context of this activity
LayoutInflater inflater = (LayoutInflater) ProfileView.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//Inflate the view from a predefined XML layout
View layout = inflater.inflate(R.layout.popup,
(ViewGroup) findViewById(R.id.popup_element));
// create a 300px width and 470px height PopupWindow
pw = new PopupWindow(layout, 300, 470, true);
// display the popup in the center
pw.showAtLocation(layout, Gravity.CENTER, 0, 0);
TextView mResultText = (TextView) layout.findViewById(R.id.server_status_text);
Button cancelButton = (Button) layout.findViewById(R.id.end_data_send_button);
cancelButton.setOnClickListener(cancel_button_click_listener);
} catch (Exception e) {
e.printStackTrace();
}
}
private View.OnClickListener cancel_button_click_listener = new View.OnClickListener() {
public void onClick(View v) {
pw.dismiss();
}
};
なぜ機能しないのかを突き止めてください...希望のサイズを取得するにはどうすればよいですか?
ここでは、ポップアップウィンドウxmlにあるレイアウトを使用できません。メインレイアウトから任意のビューを使用する必要があります。現在、FloatingButtonをshowAtLocationのビューとして使用しています。
fabButton = (ImageButton) findViewById(R.id.activity_profileView_FAB);
fabButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
initiatePopupWindow(v);
}
});
private void initiatePopupWindow(View v) {
try {
//We need to get the instance of the LayoutInflater, use the context of this activity
LayoutInflater inflater = (LayoutInflater) ProfileView.this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//Inflate the view from a predefined XML layout
View layout = inflater.inflate(R.layout.popup,
(ViewGroup) findViewById(R.id.popup_element));
// create a 300px width and 470px height PopupWindow
pw = new PopupWindow(layout, 300, 470, true);
// display the popup in the center
pw.showAtLocation(v, Gravity.CENTER, 0, 0);
TextView mResultText = (TextView) layout.findViewById(R.id.server_status_text);
Button cancelButton = (Button) layout.findViewById(R.id.end_data_send_button);
cancelButton.setOnClickListener(cancel_button_click_listener);
} catch (Exception e) {
e.printStackTrace();
}
}
ただ変える
pw = new PopupWindow(layout, 300, 470, true);
これが好き
pw = new PopupWindow(layout, LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT, true);
いずれかの側にマージンが必要な場合は、ポップアップxmlファイルでそれを行います。また、xmlでAndroid:layout_height = "wrap_content"を使用します。この利点は、どのデバイス画面でも同じように見えます(マージンを入れた場合)。