Как отобразить один вид в качестве наложения другого?

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

    

Обратите внимание, что myCustomView использует onDraw (этот последний оператор метода invalidate ()) для рисования пользовательской графики. Проблема, которую я получаю, заключается в том, что она отображает только myCustomView , WebView скрыт. Я попытался изменить цвет фона mycustomView на прозрачный, но это не имеет никакого значения.

Я также хотел бы иметь возможность сделать myCustomView в качестве наложения на WebView или наоборот.

Используйте RelativeLayout для стартеров.

Вы можете использовать параметр ViewGroup.addView(View child, int index, ViewGroup.LayoutParams params) или вариант вместе с ViewGroup.removeView(View view) или ViewGroup.removeViewAt(int index) .

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

Я не уверен, что вы можете сделать это, когда они находятся в одном XML-файле, но я знаю, что если вы перейдете:

  

в другой файл xml и создать другое действие. установите представление содержимого в XML-файл, содержащий org.example.myCustomView, и вызовите это действие. в манифесте, когда вы добавляете это действие, добавьте оператор темы так:

 android:theme="@android:style/Theme.Dialog" 

полное заявление должно выглядеть так:

   

результат будет выглядеть так (только это будет с вашими компонентами):

введите описание изображения здесь

хотя это возможно сделать, когда они все еще находятся в одном XML-файле. если это возможно, скорее всего это будет сделано, оставив манифест в одиночку и отредактировав ваш costomeView следующим образом:

  

(Я добавил заявление о теме в CustomView)

если это не то, что вы ищете, я бы рекомендовал нечто похожее на то, что сказал Ник Кэмпион, который должен был изменить fillParent на wrapContent. вы могли бы это сделать, или вы могли бы выбрать, какой размер вы хотели бы этого сделать. вот два варианта, которые вы могли бы использовать:

  

(вы можете изменить «50dip» на любое количество, которое вы хотите, до тех пор, пока оно заканчивается провалом)

или:

  

Термин fill_parent означает использование всего допустимого пространства в родительском. Попробуйте установить его в wrap_content . Затем вы можете попробовать добавить weight = 1 для обоих, чтобы попытаться равномерно распределить оставшееся пространство.

  • как получить html-контент из веб-представления?
  • Android WebView с встроенным видео с YouTube, полноэкранная кнопка замораживает видео
  • Добавить индикатор выполнения в WebView
  • Загрузить файл внутри WebView
  • Как остановить воспроизведение видео на YouTube в Android-браузере?
  • JAVAFX / WebView / WebEngine FireBugLite или какой-нибудь другой отладчик?
  • SwipeRefreshLayout + WebView, когда позиция прокрутки находится наверху
  • Веб-просмотр Android не может отображать видео в YouTube с помощью iframe
  • Android WebView - перехватывает клики
  • JavaFX 8 WebEngine: Как получить console.log () из javascript в System.out в java?
  • Производительность WebView в JavaFX
  • Давайте будем гением компьютера.