Android сделает диалог в полноэкранном режиме
Мне нужно диалоговое окно для заполнения экрана, за исключением некоторого пространства сверху и снизу.
Я искал решение, но не нашел его, возможно, потому, что объявляю его в onClickListener
.
Может кто-нибудь, пожалуйста, дайте решение?
Код операции:
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 relevant
</LinearLayout>
![enter image description here]()
Ответы
Ответ 1
установите ширину и ширину экрана в диалоговом окне
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = width;
lp.height = height;
dialog.getWindow().setAttributes(lp);
или в ваших стилях создайте стиль, подобный этому, затем
<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>
создать объект диалога, подобный этому
dialog = new Dialog(this, R.style.DialogTheme);
Изменить::
получите ширину и высоту, как это для любого устройства, которое оно заполнит.
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;
}
Ответ 2
сначала Создайте собственный стиль для диалога в файле 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>
Затем после установки этой темы в диалоговом окне Alert:
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.full_screen_dialog));
Или Вы можете вызвать новую активность и присвоить этому пользовательскому стилю эту активность в качестве темы в вашем файле манифеста...
Ответ 3
попробуйте это
которая имеет стиль стиля Theme.Dialog, выполните следующее:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
}
Ответ 4
Это может помочь кому-то.
Я хочу, чтобы диалог занимал всю ширину экрана. много искал, но ничего не нашел полезным. Наконец, это сработало для меня:
mDialog.setContentView(R.layout.my_custom_dialog);
mDialog.getWindow().setBackgroundDrawable(null);
после добавления этого, мой диалог появляется на полной ширине экрана.
Ответ 5
Сделать объект, как ниже темы
Dialog objD = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar);
Ответ 6
Я думаю, вы попробуете это:
Внутри dialogFragment:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
}
Ответ 7
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();
И в файле dialog_img.xml добавьте Imageview с помощью scaleType (fitXY).
Ответ 8
Самый простой способ создания полноэкранного диалога - создать такой стиль:
<style name="DialogFullScreenTheme" parent="Theme.AppCompat.Light.DialogWhenLarge">
<item name="windowNoTitle">true</item>
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
</style>
затем:
dialog = new Dialog(this, R.style.DialogFullScreenTheme);