J'essaie de faire une simple fenêtre pop-up. Mais chaque fois que j'en fabrique un, il finit par être super petit ... et pas la longueur que je veux. Voici à quoi ressemble la fenêtre pop-up:
Voici ma mise en page pour le pop up:
<?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>
Voici mon 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();
}
};
Impossible de comprendre pourquoi cela ne fonctionne pas ... Comment pourrais-je obtenir la taille que je veux?
Ici, vous ne pouvez pas utiliser la mise en page qui se trouve dans votre fenêtre popup xml. Vous devez utiliser n'importe quelle vue de la disposition principale. En ce moment, j'utilise FloatingButton en tant que vue pour 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();
}
}
Il suffit de changer
pw = new PopupWindow(layout, 300, 470, true);
aimer ça
pw = new PopupWindow(layout, LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT, true);
et si vous avez besoin de marges de n’importe quel côté, faites-le dans un fichier XML contextuel. Également en XML, utilisez Android: layout_height = "wrap_content". L'avantage de ceci est, - il aura le même aspect (si vous mettez une marge) dans n'importe quel écran de périphérique.