В основном я разрабатываю пользовательский интерфейс Android, который содержит плавающую кнопку действия, а также всплывающее окно. Я настроил два разных макета отдельно, один - activiy_main, а другой - всплывающее окно. Моя цель состоит в том, чтобы сделать интерфейс, который очень похож на Google Map.
https://www.google.com/url?sa=i&source=images&cd=&cad=rja&uact=8&ved=2ahUKEwjXoo2GvP_hAhVrAGMBHRGXCuYQjRx6BAgBEAU&url=https%3A%2F%2Fwww.androidauthority.com%2Fgoogle-maps-multi-stop-directions-700971%2F&psig=AOvVaw3dtFX_biqy1dEV9tUjVGlh&ust=1556976616072449
Так же, как на этом рисунке, есть кнопка плавающего действия GPS (белая круглая, которая находится вне всплывающего окна.)
Я хочу, чтобы кнопка находилась внизу карты, когда всплывающее окно не отображается (вот почему я оставил main_activity в координатной раскладке), и когда оно всплывает, кнопка должна подниматься вместе с окном, которое делает это всегда за его пределами. Обычно я думаю, что могу сделать это, организовав их в одну относительную схему. Однако я хочу разделить два макета.
Это способ позиционирования вида в одном макете относительно другого вида в другом макете?
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 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:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.constraint.ConstraintLayout
android:id="@+id/linearLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<AutoCompleteTextView
android:id="@+id/search_view"
android:layout_width="292dp"
android:layout_height="43dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
app:layout_constraintEnd_toStartOf="@+id/ButtonEnvoyer"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/ButtonEnvoyer"
android:layout_width="54dp"
android:layout_height="46dp"
android:layout_marginTop="4dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:src="@drawable/places_ic_search"
android:text="Recherche"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/search_view"
app:layout_constraintTop_toTopOf="parent" />
<org.osmdroid.views.MapView
android:id="@+id/map"
android:layout_width="wrap_content"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ButtonEnvoyer"
app:layout_constraintVertical_bias="0.0" />
</android.support.constraint.ConstraintLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
android:layout_margin="16dp"
android:src="@drawable/cursor"
android:tint="@android:color/black"
app:backgroundTint="@android:color/holo_blue_dark"
app:layout_anchorGravity="bottom|right|end" />
</android.support.design.widget.CoordinatorLayout>
popup.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="154dp"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/position"
android:layout_width="match_parent"
android:layout_height="154dp"
android:layout_margin="10dp"
android:layout_marginTop="30dp"
android:background="@android:color/white"
android:gravity="center"
android:padding="10dp"
android:text="1333"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
и всплывающее окно:
public void pop(String pos){
popupView = View.inflate(this, R.layout.popup, null);
popupWindow = new PopupWindow(popupView, WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.WRAP_CONTENT);
TextView tv = popupView.findViewById(R.id.position);
tv.setText(pos);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(true);
animation = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT, 0,
Animation.RELATIVE_TO_PARENT, 1, Animation.RELATIVE_TO_PARENT, 0);
animation.setInterpolator(new AccelerateInterpolator());
animation.setDuration(200);
popupWindow.showAtLocation(popupView, Gravity.BOTTOM, 10, 10);
popupView.startAnimation(animation);
}