【问题标题】:Display a viewpager on popup window在弹出窗口上显示查看器
【发布时间】:2016-06-13 07:24:34
【问题描述】:

在弹出窗口上显示浏览器时遇到问题。 想要在实际上是一个弹出窗口的 viewpager 上显示多个图像。但无法移除窗口的侧边空间。

浏览器

<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android" />

图像视图

<com.utility.TouchImageView
android:id="@+id/imgDisplay"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitCenter"
xmlns:android="http://schemas.android.com/apk/res/android" />

【问题讨论】:

  • 请上传您的布局xml
  • 您使用的是 popupWindow 视图还是 Dialog 视图?
  • 使用 DialogFragment 代替 PopupWindow。
  • 我在警告对话框中尝试过这个

标签: android popupwindow


【解决方案1】:

试试这个它会删除边的空格并将你的对话框显示为全屏(没有边距)

window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

上面一行是最重要的,不要错过包含它。

final Dialog dialog = new Dialog(getActivity(), R.style.DialogAnimation);
dialog.getWindow().getAttributes().windowAnimations =
        R.style.DialogOpenAnimation;

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(true);
dialog.setContentView(R.layout.dialog_mediagallary);

ImageButton back_arrow = (ImageButton) dialog.findViewById(R.id.back);
viewPagerPhotoSlideShow = (ClickableViewPager) dialog.findViewById(R.id.photolist);
adapterPhotoViewPager = new AdaterViewPagerAllmeidagallary(getActivity(), pagerListItems);
viewPagerPhotoSlideShow.setAdapter(adapterPhotoViewPager);
viewPagerPhotoSlideShow.setCurrentItem(defaultPagerItemPosition);
back_arrow.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        dialog.dismiss();
    }
});

WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
lp.gravity = Gravity.CENTER;

Window window = dialog.getWindow();
window.setAttributes(lp);
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();

【讨论】:

    【解决方案2】:

    如果您使用的是包含 viewpager 的对话框

    您可以将以下样式设置为该对话框

     dialog.setStyle(STYLE_NO_TITLE, R.style.DialogStyle);
    

    对话框样式

     <style name="DialogStyle" parent="Base.Theme.AppCompat.Dialog">
        <item name="android:windowMinWidthMajor">100%</item>
        <item name="android:windowMinWidthMinor">100%</item>
    
    </style>
    

    或者你可以计算屏幕宽度并将其传递给对话框宽度

    Dialog dialog = new Dialog(MainActivity.this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    popUpLayout = Globals.layoutInflater.inflate(R.layout.pop_up_layout,
            null);
    dialog.setContentView(popUpLayout);
    dialog.getWindow().setLayout(Desired_Width, Desired_Hight);
    dialog.show();
    

    【讨论】:

    • 如何使用样式?我应该在所需的宽度和高度中输入什么?
    • 您可以计算屏幕的宽度和高度,并可以将其传递给desired_width和desired_height,因此对话框将覆盖屏幕的整个宽度
    • 对于设置样式,您可以在 values 文件夹中声明样式并将其设置为 dialog.setStyle(STYLE_NO_TITLE, R.style.DialogStyle);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    相关资源
    最近更新 更多