Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

您好,横屏状态下弹框没有撑满整个宽度 #41

Open
HuYueling opened this issue Apr 25, 2021 · 6 comments
Open

您好,横屏状态下弹框没有撑满整个宽度 #41

HuYueling opened this issue Apr 25, 2021 · 6 comments

Comments

@HuYueling
Copy link

如题,demo中横屏,点击在下面全屏,但是横屏状态下没有占满整个宽度

@HuYueling
Copy link
Author

还有,我在使用ConstraintLayout为layout布局时,全屏后不会在指定的targetView下,而是撑满了屏幕的高度

@HuYueling
Copy link
Author

您好,宽度设置.align(PopupLayer.Align.Direction.VERTICAL, PopupLayer.Align.Horizontal.TO_PARENT_RIGHT, PopupLayer.Align.Vertical.BELOW, true)后查看源码后发现PopupLayer.Align.Horizontal.TO_PARENT_RIGHT的宽度是系统宽度,可以解决横屏后宽度没占满的问题
image

@HuYueling
Copy link
Author

但是高度还是没找到解决办法,还是出现横屏后不显示在targetView下面

@goweii
Copy link
Owner

goweii commented May 17, 2021

提供下复现代码包括xml,我好复制进demo调试。

@HuYueling
Copy link
Author

pop弹框代码

private PopupLayer popupLayer;
if (popupLayer == null) {
    popupLayer = AnyLayer.popup(findViewById(R.id.tv_show_custom_full))
            .align(PopupLayer.Align.Direction.VERTICAL, PopupLayer.Align.Horizontal.CENTER, PopupLayer.Align.Vertical.BELOW, false);
    popupLayer.contentView(R.layout.dialog_custom_full)
            .animStyle(DialogLayer.AnimStyle.TOP)
            //设置浮层外部是否拦截触摸
            .outsideInterceptTouchEvent(false)
            //点击外部是否消失 设为true 设为false代码没处理穿透事件
            .outsideTouchedToDismiss(false)
            .backgroundDimDefault()
            .onInitialize(new Layer.OnInitialize() {
                @Override
                public void onInit(@NonNull Layer layer) {
                    //第一次初始化时绑定的数据
                    //添加背景点击事件,防止点击背景事件穿透
                    layer.getViewHolder().getChild()
                            .findViewById(R.id.anylayler_dialog_background)
                            .setOnClickListener(v -> {
                                popupLayer.dismiss();
                            });
                    PopCustomAdapter adapter = new PopCustomAdapter();
                    RecyclerView recyclerView = layer.requireView(R.id.pop_recycle_view);
                    recyclerView.setLayoutManager(new LinearLayoutManager(NormalActivity.this));
                    recyclerView.setAdapter(adapter);
                }
            });
}
if (popupLayer.isShown()) {
    popupLayer.dismiss();
} else {
    popupLayer.show();
}

pop弹框layout

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ffffff">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/pop_recycle_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:overScrollMode="never"
        app:layout_constrainedHeight="true"
        app:layout_constraintBottom_toTopOf="@+id/reset_layout"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
        tools:listitem="@layout/pw_item_custom_layout"
        tools:spanCount="3" />

    <TextView
        android:id="@+id/reset_layout"
        android:layout_width="match_parent"
        android:layout_height="44dp"
        android:gravity="center"
        android:text="重置"
        android:textColor="#ff4919"
        android:textSize="14sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/pop_recycle_view" />

</androidx.constraintlayout.widget.ConstraintLayout>

pop弹框适配器

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

public class PopCustomAdapter extends RecyclerView.Adapter<PopCustomAdapter.MyViewHolder> {
    @NonNull
    @Override
    public PopCustomAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.pw_item_custom_layout, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull PopCustomAdapter.MyViewHolder holder, int position) {
        holder.textView.setText("ITEM" + position);
    }
   //更改item个数 高度超出页面高度
    @Override
    public int getItemCount() {
        return 10;
    }

    public static class MyViewHolder extends RecyclerView.ViewHolder {

        private final TextView textView;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            textView = itemView.findViewById(R.id.text_view);
        }
    }
}

pop适配器item layout

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="hahha"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        android:gravity="center"/>

</androidx.constraintlayout.widget.ConstraintLayout>

@HuYueling
Copy link
Author

targetView
findViewById(R.id.tv_show_custom_full)是固定在顶部的,然后更改适配器的item数量后,高度太高会覆盖住targetView

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants