我有两个视图占据整个屏幕,我想同时显示两个视图,一个在另一个上面。我的布局如下:
<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(此方法最后一个语句为invalidate())来绘制自定义图形。我得到的问题是它只显示myCustomView
,隐藏了WebView
。我试图将mycustomView
的背景颜色更改为透明,但这没有任何区别。
我还希望能够将myCustomView
作为WebView
上的叠加层,反之亦然。
答案 0 :(得分:23)
为初学者使用RelativeLayout
。
您可以使用ViewGroup.addView(View child, int index, ViewGroup.LayoutParams params)
或变体以及ViewGroup.removeView(View view)
或ViewGroup.removeViewAt(int index)
。
这显然需要您使用LayoutInflater
手动充气视图,但您可以在充气后保持对每个视图的全局参考,并在两者之间翻转。
答案 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文件,并创建另一个活动。将内容视图设置为包含org.example.myCustomView的xml文件并调用该活动。在清单中,当您添加该活动时,添加一个主题语句:
android:theme="@android:style/Theme.Dialog"
完整陈述应如下所示:
<activity android:name=".name_of_activity"
android:label="TextToBeOnTop"
android:theme="@android:style/Theme.Dialog">
</activity>
结果将如下所示(仅适用于您的组件):
虽然当它们仍然在同一个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中)
如果这不是你想要的东西,那么我会把一些与Nick Campion所说的相似的东西重新贴上来,这就是将fillParent改为wrapContent。 你可以做到这一点,或者你可以选择你想要的尺寸。您可以使用以下两个选项:
<org.example.myCustomView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="50dip"
android:layout_height="50dip" />
(你可以将“50dip”更改为你想要的任何数字,只要它以dip结束)
或:
<org.example.myCustomView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
答案 2 :(得分:-1)
术语fill_parent
表示消耗父级中的所有允许空间。尝试将其设置为wrap_content
。然后,您可以尝试向两者添加weight = 1
,以尝试均匀分配剩余空间。