Intereting Posts
Ndk-stack: невозможно открыть файл символа … /../ libutil.so. Ошибка (9): неправильный дескриптор файла Попытка поймать щелчок на элементе ListView android: android: descendantFocusability = "blocksDescendants" не работает Выпадающая высота AutoCompleteTextView ограничена во всплывающем диалоговом окне Сохранить изображение, записанное во внутреннем хранилище? Android 6 Marshmallow: запросы на некоторые конкретные разрешения мгновенно отклоняются без отображения ui Android: Logcat ничего не показывает в Intellij IDEA Android. Команда «Процесс»> «… aapt.exe» завершена с ненулевым значением> exit 1 Как получить токен обновления для google plus в android? Минимальная цель должна быть меньше 14 при использовании WindowManager.LayoutParams.TYPE_KEYGUARD Отключить будущие даты в Android date picker Android – Как связать бесплатное приложение с версией Pro Возможно ли построить DialogPreference из DialogFragment? Как настроить пользовательский заголовок в запросе Volley Соответствие между координатами ImageView и растровыми пикселями – Android Добавление прослушивателей событий касания к MapView

Повторное копирование нижней панели Google Maps

Я пытаюсь воспроизвести анимацию нижней панели Google Maps:

  1. Нажмите на маркер Карты показывает небольшую часть нижней панели (заголовок)
  2. Проведите по панели заголовка панель полного размера с дополнительной информацией.
  3. Проведите пальцем по полноразмерной панели, только просмотрев только заголовок
  4. Отметьте маркер, а нижняя панель diasappears

Используя TranslationAnimation , я смог получить нижнюю панель для анимации при нажатии на маркер. К проблеме, которую я испытываю, заключается в том, что в конце анимации я должен установить свой вид в VISIBLE чтобы панель отображалась, но затем отображается полная панель, а не только верхняя часть заголовка.

В настоящее время я использую FrameLayout, содержащий LinearLayout, в качестве представления нижней панели:

 <FrameLayout android:id="@+id/viewBottomPane" android:layout_width="match_parent" android:visibility="gone" android:background="#000000" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|bottom"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <include android:id="@+id/paneHeader" layout="@layout/headerPanel" /> <TextView android:id="@+id/paneFooter" android:text="" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> </FrameLayout> 

Я хотел бы просто показать paneHeader на кране маркера карты, затем проведите пальцем вверх, чтобы показать полный viewBottomPane , проведите вниз, чтобы показать paneHeader и нажмите маркер, чтобы скрыть все.

Solutions Collecting From Web of "Повторное копирование нижней панели Google Maps"

Раньше я использовал эту библиотеку для этой пурпуры и работал очень хорошо.

https://github.com/umano/AndroidSlidingUpPanel

В документации говорится об этом

Этот код в значительной степени основан на компоненте SlidingPaneLayout с открытым исходным кодом из r13 библиотеки поддержки Android. Спасибо команде Android!

Я пробовал на Android 2.3.6, и он отлично работает. Не знаю, нужна ли вам поддержка обратной совместимости, но если вы сделаете это, это будет полезно.

У вас есть xml-часть

 <com.sothree.slidinguppanel.SlidingUpPanelLayout android:id="@+id/sliding_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="bottom"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Main Content" android:textSize="16sp" /> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center|top" android:text="The Awesome Sliding Up Panel" android:textSize="16sp" /> </com.sothree.slidinguppanel.SlidingUpPanelLayout> 

А слушатели на вашем классе

 SlidingUpPanelLayout layout = (SlidingUpPanelLayout) findViewById(R.id.sliding_layout); layout.setShadowDrawable(getResources().getDrawable(R.drawable.above_shadow)); layout.setAnchorPoint(0.3f); layout.setPanelSlideListener(new PanelSlideListener() { @Override public void onPanelSlide(View panel, float slideOffset) { Log.i(TAG, "onPanelSlide, offset " + slideOffset); if (slideOffset < 0.2) { if (getActionBar().isShowing()) { getActionBar().hide(); } } else { if (!getActionBar().isShowing()) { getActionBar().show(); } } } @Override public void onPanelExpanded(View panel) { Log.i(TAG, "onPanelExpanded"); } @Override public void onPanelCollapsed(View panel) { Log.i(TAG, "onPanelCollapsed"); } @Override public void onPanelAnchored(View panel) { Log.i(TAG, "onPanelAnchored"); } }); 

Также вы можете заявить, что это приведет к событию панели.

Надеюсь, поможет! 🙂