Как сделать горизонтальное всплывающее окно? - PullRequest
0 голосов
/ 04 мая 2018

Я не знаю, как сделать горизонтальное всплывающее окно в Android. Я хочу сделать что-то вроде этого:

SO50175461 Q example

Я уже написал этот код:

public void onPopUp(View view) {

    LayoutInflater layoutInflater = (LayoutInflater) this.getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);

    final View popupView = layoutInflater.inflate(R.layout.popup, null);
    final PopupWindow popupWindow = new PopupWindow(
            popupView,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT, true);

    popupWindow.setOutsideTouchable(true);
    popupWindow.setFocusable(true);

    popupWindow.setBackgroundDrawable(new BitmapDrawable());

    View parent = view.getRootView();

    popupWindow.showAtLocation(parent, Gravity.CENTER, 100, 50);
}

, но всплывающее окно прозрачно, плохо расположено в зависимости от используемого устройства и не исчезнет, ​​пока я не нажму дважды.

Если у вас есть идеи или я делаю что-то не так, скажите мне!

1 Ответ

0 голосов
/ 04 мая 2018

Попробуйте это:

в макете своей деятельности добавьте:

<RelativeLayout
    android:layout_width="300dp"
    android:id="@+id/toMove"
    android:layout_marginLeft="-250dp"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="80dp"
    android:background="#AA000000"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:text="Text Here"
        android:textColor="#000"
        android:gravity="center"
        android:textSize="50sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</RelativeLayout>

Затем в классе деятельности добавьте:

public boolean hidden=true;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewById(R.id.toMove).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(hidden){
                int animationpos = 0;
                ((RelativeLayout)findViewById(R.id.toMove)).animate().x(animationpos).setDuration(1000);

                hidden=false;
            }else{
                hidden=true;
                int animationpos = -800;
                ((RelativeLayout)findViewById(R.id.toMove)).animate().x(animationpos).setDuration(1000);


            }
        }
    });
}

Не лучший способ сделать это, но он должен выполнить работу.

...