J'ai besoin de la boîte de dialogue pour remplir l'écran, à l'exception de l'espace en haut et en bas . J'ai cherché une solution, mais je n'ai pas pu en trouver une probablement parce que je la déclare dans un onClickListener
. Quelqu'un peut-il s'il vous plaît donner une solution?
Code d'activité:
sort.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder sort = new AlertDialog.Builder(HomeScreen.this);
// Get the layout inflater
LayoutInflater inflater = HomeScreen.this.getLayoutInflater();
View sortView = inflater.inflate(R.layout.sort_layout, null);
sort.setView(sortView);
sort.create().show();
}
});
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:layout_marginBottom="50dp"
Android:layout_marginTop="50dp"
Android:background="@color/white"
Android:orientation="vertical" Android:layout_gravity="center">
+ some more stuff here I dont think it's relevant
</LinearLayout>
définissez ici la largeur et la largeur de votre écran dans la boîte de dialogue.
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = width;
lp.height = height;
dialog.getWindow().setAttributes(lp);
ou dans vos styles créer un style comme celui-ci alors
<style name="DialogTheme" parent="Android:Theme.Dialog">
<item name="Android:layout_width">fill_parent</item>
<item name="Android:layout_height">fill_parent</item>
<!-- No backgrounds, titles or window float -->
<item name="Android:windowBackground">@null</item>
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowIsFloating">false</item>
</style>
créer un objet de dialogue comme celui-ci
dialog = new Dialog(this, R.style.DialogTheme);
Modifier ::
obtenez la largeur et la hauteur comme celle-ci pour tout appareil à remplir.
WindowManager manager = (WindowManager) getSystemService(Activity.WINDOW_SERVICE);
int width, height;
LayoutParams params;
if (Build.VERSION.SDK_INT > VERSION_CODES.FROYO) {
width = manager.getDefaultDisplay().getWidth();
height = manager.getDefaultDisplay().getHeight();
} else {
Point point = new Point();
manager.getDefaultDisplay().getSize(point);
width = point.x;
height = point.y;
}
commencez par créer un style personnalisé pour la boîte de dialogue dans le fichier style.xml:
<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>
</style>
Ensuite, après avoir défini ce thème dans votre boîte de dialogue d'alerte:
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.full_screen_dialog));
Ou vous pouvez appeler une nouvelle activité et attribuer à cette activité un style personnalisé en tant que thème de votre fichier manifeste ...
Cela peut être utile pour quelqu'un .. Je veux qu'une boîte de dialogue prenne toute la largeur de l'écran. cherché beaucoup mais rien trouvé utile. Enfin cela a fonctionné pour moi:
mDialog.setContentView(R.layout.my_custom_dialog);
mDialog.getWindow().setBackgroundDrawable(null);
après avoir ajouté ceci, ma boîte de dialogue apparaît sur toute la largeur de l'écran.
essaye ça
pour l’activité ayant le style Theme.Dialog, procédez comme suit:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
}
Faire un objet comme ci-dessous thème
Dialog objD = new Dialog(this, Android.R.style.Theme_Translucent_NoTitleBar);
Je pense que vous devriez essayer celui-ci:
À l'intérieur du dialogFragment :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, Android.R.style.Theme_Black_NoTitleBar_Fullscreen);
}
Dialog dialog2 = new Dialog(context, R.style.DialogTheme);
dialog2.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog2.getWindow().setBackgroundDrawable(null);
dialog2.setContentView(R.layout.dialog_img);
WindowManager.LayoutParams lp = dialog2.getWindow().getAttributes();
Window window = dialog2.getWindow();
lp.copyFrom(window.getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(lp);
lp.gravity = Gravity.CENTER;
final ImageView imgprofile=(ImageView)dialog2.findViewById(R.id.img_centre);
Picasso.with(context)
.load(arrayImages.get(position).get("image"))
.resize(800,1000)
.centerInside()
.into(imgprofile, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
imgprofile.setImageResource(R.drawable.user);
}
});
dialog2.show();
Et dans votre fichier dialog_img.xml, ajoutez une Imageview avec scaleType (fitXY).