web-dev-qa-db-ja.com

あるビューを別のビューのオーバーレイとしてどのように表示しますか?

画面全体を表示する2つのビューがあり、両方のビューを同時に表示します。私のレイアウトは次のようになります。

<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の背景色を透明に変更しようとしましたが、違いはありません。

また、myCustomViewWebViewのオーバーレイとして、またはその逆に作成できるようにしたいと考えています。

29
ace

まず、RelativeLayoutを使用します。

ViewGroup.addView(View child, int index, ViewGroup.LayoutParams params)またはViewGroup.removeView(View view)またはViewGroup.removeViewAt(int index)と共にバリアントを使用できます。

これには、明らかにLayoutInflaterを使用してビューを手動で膨らませる必要がありますが、膨らませた後にそれぞれへのグローバル参照を保持し、単に2つを切り替えることができます。

23
techiServices

それらが同じ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>

結果は次のようになります(代わりにコンポーネントのみが表示されます)。

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に変更することでした。あなたはそれをすることができます、またはあなたはそれがしたいサイズを選択することができます。次の2つのオプションを使用できます。

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

(「dip」で終わる限り、「50dip」を任意の数値に変更できます)

または:

<org.example.myCustomView  
    xmlns:Android="http://schemas.Android.com/apk/res/Android"  
    Android:layout_width="wrap_content"  
    Android:layout_height="wrap_content" />
15
Ephraim