Android studio один элемент поверх другого

Android ConstraintLayout — поместите один вид поверх другого

Я пытаюсь добавить ProgressBar поверх Button (оба находятся внутри ConstraintLayout ).

Но даже после вызова bringToFront на ProgressBar в onCreate он всегда остается за Button .

7 ответов

Установите высоту ProgressBar ; 2dp , кажется, работает.

Вы также можете попробовать установить translationZ , как указано в принятом ответе на аналогичный вопрос.

Я также наткнулся на этот ответ в качестве альтернативы.

По умолчанию для кнопки установлен TranslationZ, поэтому у вас есть два варианта

1 — сделать индикатор выполнения TranslationZ больше, чем высота кнопки

2 — установите для кнопки TranslateZ значение 0, чтобы представления отображались друг над другом в определенном порядке в вашем макете ограничений, вы можете добиться этого, установив стиль на кнопку

Обновленный ответ для Android Studio 3.5:

В обновленном редакторе макетов теперь намного проще выбирать, какой вид будет впереди, как показано в заметках о выпуске Android Studio.

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

Еще проще: если вы перетащите вид вверх (скопируйте или вставьте из дерева компонентов в редакторе макета), он получит более низкий приоритет (так что он будет позади других видов)

Вы можете обернуть его, как показано ниже. Используйте framelayout в качестве родительского элемента и поместите индикатор выполнения вне макета ограничения. Это будет перекрывать кнопку

В большинстве случаев вы можете просто определить вид, который вы хотите сверху, после того, который должен появиться под ним.

Нам нужно использовать Android: высота, чтобы контролировать это.

Этот атрибут высоты работает только на уровне API> = 21. Но ниже он будет вести себя нормально. Если мы добавим Progress под представлением Button, оно покажет представление, которое находится внизу вверху другого представления.

Источник

Как сделать RelativeLayout поверх другого?

Есть основной фрагмент:

Он содержит два основных элемента
это карта и RelativeLayout. Последний элемент мы скрываем.
Так овт при перемещении карты или клику по элементу карты, мне надо чтобы RelativeLayout (company_details).
Собственно я этого добился:

Как сделать один инпут поверх другого
Есть два инпута, один текстовый, второй сабмит с фоном картинки, нужно сделать чтобы сабмит был.

Как разместить изображение из Label поверх другого изображения?
а у меня возник вопрос! как разместить изображение из Label поверх другого изображения? мне нужно.

Как поставить какой-либо объект поверх другого?
вопрос Н1 есть ли аналоги действия refresh такие, чтобы экран не мерцал(при движении строки) .

Как расположить два фона один поверх другого?
Здравствуйте! Решаю задание на курсах по CSS. Никак не могу решить. Есть какое-то правило, каким.

Читайте также:  Футбол без кеша для андроид

Как реализовать (настроить) отображение какого либо рисунка поверх другого
Как реализовать (настроить) отображение какого либо рисунка поверх другого? В VB автоматически.

Сделать RelativeLayout во весь экран устройства
У меня есть разметка активити activity_main.xml .

Как отобразить кнопку поверх остальных элементов или поверх tabPage или поверх tabControl?
Как отобразить кнопку поверх остальных элементов или поверх tabPage или поверх tabControl? .

Источник

Размещение textview поверх imageview в android

это дает выход как ниже

как сделать что-то вроде ниже

Примечание:: Блюдо 1 & 2 являются textviews

7 ответов

это должно дать вам необходимую планировку:

сыграет с android:layout_marginTop=»20dp» чтобы увидеть, какой подходит вам лучше. Используйте код textview для динамической установки android:text значение.

поскольку RelativeLayout стекает свои дочерние элементы, определение TextView после ImageView помещает его «поверх» ImageView.

Примечание: аналогичные результаты могут быть получены с помощью FrameLayout как родитель, наряду с повышением эффективности по сравнению с использованием любого другого android контейнер. Спасибо Igor Ganapolsky (см. комментарий ниже), отметив, что этот ответ нуждается в обновлении.

надеюсь, это может вам помочь.

можно использовать framelayout для достижения этой цели.

Как использовать framelayout

просто перетащите TextView поверх ImageView в eclipse

и это вывод вышеуказанного xml

как вы упомянули в OP, вам нужно наложить Text on ImageView как программно. Вы можете получить ImageView drawable и писать на нем с помощью размещения его на Canvas и Paint .

вы можете попробовать это слишком. Я использую просто так.

может быть, вам стоит сначала написать ImageView, а затем TextView. Иногда это помогает. Это просто, но я надеюсь, что это кому-то поможет. 🙂

Источник

FrameLayout

FrameLayout является самым простым типом разметки. Обычно это пустое пространство на экране, которое можно заполнить только дочерними объектами View или ViewGroup. Все дочерние элементы FrameLayout прикрепляются к верхнему левому углу экрана.

В разметке FrameLayout нельзя определить различное местоположение для дочернего объекта. Последующие дочерние объекты View будут просто рисоваться поверх предыдущих компонентов, частично или полностью затеняя их, если находящийся сверху объект непрозрачен, поэтому единственный дочерний элемент для FrameLayout обычно растянут до размеров родительского контейнера и имеет атрибуты:

Также можно использовать свойства Gravity для управления порядком размещения.

FrameLayout можно использовать для интересного эффекта, когда верхняя часть (TextView) остаётся неизменной, а основной контент прокручивается.

Поочередная смена картинки

Создадим разметку, когда на экран динамически выводится только одно изображение.

Теперь код для активности, где при нажатии на изображении, оно будет заменяться на другое.

В разметке мы указали, что один из компонентов ImageView должен быть невидимым. Если бы мы этого не сделали, то увидели, что компоненты просто накладываются друг на друга в стопку. И если элементы разных размеров, то можно увидеть, как одно изображение частично перекрывает другое.

Имейте в виду, что размер компоновки FrameLayout определяется наибольшим элементом в контейнере. Поэтому более маленькое изображение может растянуться.

Читайте также:  Как узнать кэш своего андроида

Если часть элементов сверху стопки являются невидимыми, то могут наблюдаться проблемы с выводом на экран. В этих случаях рекомендуется вызывать метод setMeasureAllChildren() с аргументом true (аналог метода — атрибут android:measureAllChildren=»true»).

Источник

Русские Блоги

Реализация плавающего окна Android

Современные технологические новости

19 июня Xiaomi официально объявила, что после неоднократных и тщательных исследований она решила поэтапно реализовать план листинга в Гонконге и Китае, то есть после листинга в Гонконге, затем выбрать возможность листинга в стране, выпустив CDR. В связи с этим SFC выразил уважение к выбору Xiaomi отложить выдачу CDR.

Эта статья из Донг Сяочонг Вклад, делясь знаниями о плавающих окнах в Android, взгляните! Надеюсь, вам всем нравится.

Донг Сяочонг Адрес блога:

Многие приложения теперь используют плавающие окна. Например, когда WeChat находится в видео, нажмите кнопку «Домой», и на экране все еще будет отображаться небольшое видеоокно. Эта функция очень полезна во многих ситуациях. Поэтому сегодня мы реализуем плавающее окно Android и исследуем точки ошибок при реализации плавающего окна.

Интерфейс плагина плавающего окна

Перед реализацией плавающего окна нам нужно знать, через какой интерфейс мы можем поместить элемент управления на экран. Рисование интерфейса Android достигается через сервис WindowMananger. Итак, поскольку мы хотим реализовать плавающее окно, которое может быть на интерфейсе, отличном от нашего собственного приложения, мы должны использовать WindowManager, чтобы «сделать это».

WindowManager реализует интерфейс ViewManager, который можно получить, получив системную службу WINDOW_SERVICE. Интерфейс ViewManager имеет метод addView, и мы используем этот метод для добавления элемента управления плавающим окном на экран.

Настройка разрешения и запрос

Плавающее окно должно отображать элементы управления поверх других приложений. Очевидно, это требует определенных разрешений. Когда API Level> = 23, вам нужно объявить разрешение SYSTEM_ALERT_WINDOW в файле AndroidManefest.xml для рисования элементов управления в других приложениях.

В дополнение к этому разрешению нам также нужно установить разрешение плавающего окна для этого приложения в настройках системы. Это разрешение должно запускать Settings.ACTION_MANAGE_OVERLAY_PERMISSION в приложении, чтобы позволить пользователю вручную устанавливать разрешения.

Настройки LayoutParam

Метод addView в WindowManager имеет два параметра: один — объект управления, который необходимо добавить, а другой — объект WindowManager.LayoutParam.

Здесь необходимо подчеркнуть переменную типа в LayoutParam. Эта переменная используется для указания типа окна. При настройке этой переменной вам нужно обратить внимание на яму, то есть вам нужно адаптироваться к различным версиям системы Android.

До Android 8.0 параметром плавающего окна мог быть TYPE_PHONE, который не является окном приложения и используется для взаимодействия с пользователем.

Android 8.0 изменил поведение системы и API, в том числе приложения, использующие разрешение SYSTEM_ALERT_WINDOW, больше не могут использовать тип окна для отображения окон напоминания над другими приложениями и окнами:

Если вам нужно реализовать окно напоминания над другими приложениями и окнами, это должен быть новый тип TYPE_APPLICATION_OVERLAY. ¡Если плавающее окно типа TYPE_PHONE по-прежнему используется в Android 8.0 и выше, появится следующее сообщение об исключении:

android.view.WindowManager$BadTokenException: Unable to add window [email protected] — permission denied for window type 2002

Позвольте мне объяснить конкретную реализацию плавающего окна. Чтобы отключить плавающее окно от Activity, чтобы плавающее окно могло нормально работать, когда приложение находится в фоновом режиме, здесь мы используем Service, чтобы запустить плавающее окно и служить его логической поддержкой. Перед запуском сервиса вам необходимо определить, разрешено ли открывать плавающее окно в данный момент.

Читайте также:  Проекты для юнити андроид

Элемент управления плавающим окном может быть любым подтипом View. Вот пример с самой простой кнопкой.

Хорошо, закончил! Да, верно, это самое простое плавающее окно. Разве это не просто? Давайте посмотрим на эффект.

Конечно, эффект этого плавающего окна только отображается, и он далек от действительно желаемого эффекта. Но основной принцип уже реализован, а остальное — добавить немного функциональности.

Добавить небольшие функции

Функция перетаскивания

Первое, что я хочу добавить, — это возможность перетаскивать это плавающее окно. Поскольку положение плавающего окна может блокировать информацию, которую мы хотим видеть позади, лучше, если вы можете утащить плавающее окно. В Android обработка сенсорных событий считается самой основной операцией непосредственно в коде.

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

Автовоспроизведение фото

Давайте внесем небольшие изменения в плавающее окно, чтобы продемонстрировать немного сложный интерфейс. Здесь мы больше не просто используем элемент управления Button для интерфейса с плавающим окном, но добавляем ImageView в LinearLayout. Файл макета выглядит следующим образом.

Внесите некоторые изменения в место создания плавающего окна.

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

Посмотрите на эффект автоматического воспроизведения картинок в плавающем окне.

Видео виджет

Давайте посмотрим на наиболее часто используемую функцию плавающих окон: маленькие видеоокна. Например, когда WeChat выходит из интерфейса во время видео, видео будет отображаться в виде небольшого окна. Здесь я сначала использую MediaPlay и SurfaceView для воспроизведения сетевого видео для имитации эффекта. Реализация в основном такая же, как у проигрывателя картинок выше, за исключением того, что элементы управления и соответствующая логика воспроизведения изменены. Файл макета аналогичен изображенному выше проигрывателю изображений, за исключением того, что ImageView заменен на SurfaceView. Создать плавающее окно управления.

Хорошо, давайте иметь печальное «Сокровище» с Марса.

Выше приведена реализация плавающего окна Android и некоторых небольших простых приложений. Это можно суммировать как следующие шаги:

Декларация и применение приложения

Элементы управления, необходимые для создания плавающих окон

Добавить элементы управления в `WindowManager`

Обновите макет WindowManager, если это необходимо

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

Адрес проекта следующий:

добро пожаловатьДолгое нажатие -> Определите QR-код на картинке

Илиотсканируйте этоСледуйте за моим публичным аккаунтом

Источник

Оцените статью