J'ai une activité Android qui implémente une boîte de dialogue personnalisée. L'application est en cours d'exécution mais la boîte de dialogue est trop petite. Je souhaite afficher une boîte de dialogue plus grande. Comment puis-je y parvenir? Voici ma mise en page xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@color/white"
Android:orientation="vertical" >
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical"
Android:background="@drawable/view_more_borders">
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_weight="1"
Android:orientation="horizontal"
Android:layout_marginTop="4dp"
Android:gravity="center_vertical">
<TextView
Android:id="@+id/share_amount"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:text="Company Name:"
Android:textAppearance="?android:attr/textAppearanceSmall"
Android:textColor="@color/Nice_blue"
Android:typeface="sans" />
<TextView
Android:id="@+id/textViewCompanyName"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1.80"
Android:text=" "
Android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_weight="1"
Android:layout_marginTop="4dp"
Android:gravity="center_vertical">
<TextView
Android:id="@+id/textView5"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:text="Price per share:"
Android:textAppearance="?android:attr/textAppearanceSmall"
Android:textColor="@color/Nice_blue" />
<TextView
Android:id="@+id/textViewprice_pershare"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="2"
Android:layout_alignBaseline="@+id/Yesterday"
Android:layout_alignBottom="@+id/Yesterday"
Android:layout_marginLeft="38dp"
Android:fontFamily="sans-serif"
Android:layout_toRightOf="@+id/company"
Android:text=" "
Android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_weight="1"
Android:layout_marginTop="4dp"
Android:gravity="center_vertical">
<TextView
Android:id="@+id/textView4"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:text="Total cost:"
Android:textAppearance="?android:attr/textAppearanceSmall"
Android:textColor="@color/Nice_blue" />
<TextView
Android:id="@+id/textview_totalcost"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="2"
Android:layout_alignBaseline="@+id/Yesterday"
Android:layout_alignBottom="@+id/Yesterday"
Android:layout_marginLeft="38dp"
Android:fontFamily="sans-serif"
Android:layout_toRightOf="@+id/company"
Android:text=" "
Android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_weight="1"
Android:layout_marginTop="4dp"
Android:gravity="center_vertical">
<TextView
Android:id="@+id/textView3"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:text="Number of shares:"
Android:textAppearance="?android:attr/textAppearanceSmall"
Android:textColor="@color/Nice_blue" />
<EditText
Android:id="@+id/shareNumber"
Android:layout_width="0dp"
Android:layout_weight="2"
Android:layout_height="wrap_content"
Android:inputType="number"
Android:fontFamily="sans-serif"
Android:textSize="12sp"
>
<requestFocus />
</EditText>
</LinearLayout>
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_weight="1"
Android:layout_marginTop="4dp"
Android:gravity="center_vertical">
<TextView
Android:id="@+id/textView2"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:text="Payment method:"
Android:textAppearance="?android:attr/textAppearanceSmall"
Android:textColor="@color/Nice_blue" />
<Spinner
Android:id="@+id/spinner_paymentmode"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="2" />
</LinearLayout>
</LinearLayout>
<Button
Android:id="@+id/button_buy_shares"
style="@style/ButtonText"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/blue_button"
Android:text="Buy" />
Et voici ma sortie. Je veux augmenter la largeur et la hauteur de la boîte de dialogue.
Et mon fichier Java
public class MyDialogFragment extends DialogFragment {
public MyDialogFragment() {
}
private EditText mEditText;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dialogfragment, container);
// mEditText = (EditText) view.findViewById(R.id.txt_your_name);
// getDialog().setTitle("Hello");
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
return view;
}
}
Changez votre dimension de dialogue au moment de l'exécution:
yourDialog.show();
yourDialog.getWindow().setLayout((6 * width)/7, LayoutParams.WRAP_CONTENT);
Vous pouvez le faire pour les deux dimensions, dans mon exemple, je n’ai changé que la largeur. Espérons que cela aide!
MODIFIER
J'ai oublié de mentionner où j'ai pris la largeur:
DisplayMetrics metrics = getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
EDIT 2
Essayez ce code:
Dialog yourDialog = dialogFragment.getDialog();
yourDialog.getWindow().setLayout((6 * width)/7, (4 * height)/5);
Configuration d'Android: minWidth et Android: minHeight dans la présentation personnalisée me convient parfaitement.
mettre en dessous de la ligne dans onCreate
setStyle(DialogFragment.STYLE_NO_TITLE, Android.R.style.Theme_Holo_Light_Dialog_NoActionBar_MinWidth);
<style name="full_screen_dialog" parent="@Android:style/Theme.Dialog">
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowFullscreen">true</item>
<item name="Android:windowIsFloating">true</item>
<item name="Android:windowContentOverlay">@null</item>
<item name="Android:windowAnimationStyle">@Android:style/Animation.Dialog</item>
<item name="Android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="Android:windowBackground">@Android:color/transparent</item>
<item name="Android:minWidth" type="dimen">600dp</item>
</style>
Utiliser ceci dans le fichier style.xml
et utiliser ce style dans la classe de dialogue
La bonne solution consiste à remplacer la méthode onCreateDialog
plutôt que onCreateView
et à créer votre boîte de dialogue avec un AlertDialog.Builder
, comme expliqué dans la doc: http://developer.Android.com/reference/Android/app/DialogFragment.html#AlertDialog
Les dialogues sont dimensionnés en fonction de leur contenu. Vous pouvez ajouter des marges de remplissage et des marges sur la disposition externe pour utiliser plus d'espace, mais cela ne redistribuera pas les vues à l'intérieur.
Essaye ça
Pour régler la largeur et la hauteur de la boîte de dialogue en fonction de la taille de l'écran du périphérique
Display display;
int DisplayWidth, DisplayHeight, DialogWidth, DialogHeight;
Dialog dialog;
display =((WindowManager)activity_context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
DisplayWidth = display.getWidth();
DisplayHeight = display.getHeight();
if(DisplayHeight > DisplayWidth)
{
DialogWidth = (6 * DisplayWidth) / 7 ;
DialogHeight = (4 * DisplayHeight) / 5 ;
}
else
{
DialogWidth = (6 * DisplayWidth) / 9 ;
DialogHeight = (4 * DisplayHeight) / 5 ;
}
dialog = new Dialog(activity_context);
// Set your dialog width and height dynamically as per your screen.
Window window = dialog.getWindow();
window.setLayout(DialogWidth,DialogHeight);
window.setGravity(Gravity.CENTER);
dialog.show();
essayez de définir Android:layout_height
à une valeur pour la base LinearLayout
par exemple
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
<!-- right here -->
Android:layout_height="100dp"
Android:background="@color/white"
Android:orientation="vertical" >
Ajouter Android: minWidth / Android: minHeight à votre vue racine. Voir exemple ci-dessous:
<RelativeLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:minWidth="300dp"
Android:minHeight="500dp">