2011-02-04 3 views
29

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <WebView 
     android:id="@+id/webview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
    /> 

    <org.example.myCustomView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
    /> 

</LinearLayout> 

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

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

ответ

23

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

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

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

+3

Спасибо! Я изменил LinearLayout на RelativeLayout, и он сработал. Другие 2 ответа не помогли. – ace

+0

Ваш прием. Все самое лучшее: D – techiServices

+0

'FrameLayout' также хорошо, если вы не беспокоитесь о том, чтобы позиционировать вещи относительно друг друга. –

-1

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

15

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

<org.example.myCustomView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 

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

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

полное заявление должно выглядеть следующим образом:

<activity android:name=".name_of_activity" 
    android:label="TextToBeOnTop" 
    android:theme="@android:style/Theme.Dialog"> 
</activity> 

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

enter image description here

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

<org.example.myCustomView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:theme="@android:style/Theme.Dialog" /> 

(Я добавил тему утверждение в CustomView)

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

<org.example.myCustomView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="50dip" 
    android:layout_height="50dip" /> 

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

или:

<org.example.myCustomView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 
Смежные вопросы