1

SurfaceViewを使用しようとしています。そこで、以下のコードに示すように、レイアウトファイルにSurfaceViewウィジェットを作成しました。私が持っている問題は、SurfaceViewにウェイトを設定する方法です。コードに以下に示すように は私が設定:SurfaceViewが画面の特定のセクションを占めるようにする方法

android:layout_weight=".4" 

をまだSurfaceViewがeintire画面を占有し、私が欲しいのはSurfaceViewは、画面のわずか40%を占めているようにすることです。私はこのリンクの投稿にも言及しましたSurfaceView in Layout xmlファイルからSurfaceViewへの重みを設定する方法は示されていません。

xmlファイルからSurfaceViewの重さを設定する方法を教えてください。

コード

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.surfaceview_00.MainActivity"> 

<SurfaceView 
    android:id="@+id/mainActivity_surfaceView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight=".4"/> 
</RelativeLayout> 

が更新

私はまた、以下のコードを試してみましたが、それでも私は、画面全体を占有する1つのSurfaceViewを得ました。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.surfaceview_00.MainActivity"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:weightSum="2"> 

    <SurfaceView 
     android:id="@+id/mainActivity_SurfaceView1" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> 

    <SurfaceView 
     android:id="@+id/mainActivity_SurfaceView2" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"/> 
</LinearLayout> 

</RelativeLayout> 
+0

"でも、画面全体を占めるSurfaceViewは1つしかありません。" SurfaceViewは1つしかないことをどうやって知っていますか? –

+0

@ Code-Apprentice私は上記の更新セクションでipostedコードで述べたので。私は直線レイアウト内に2つのサーフェスビューを持ち、それぞれがlayout_weoght = .5に割り当てられています。実行時には1つのサーフェイスビューしか表示されず、画面全体を占めています – user2121

答えて

1

android:layout_weightのみLinearLayoutによって使用されます。以下のコードを実行すると、各画面の半分を占めているが、私は一つだけ

コードを得た2 SurfaceViewsを持つようになった後、私は期待していました。 RelativeLayoutを使用しているため、無視されます。

+0

okしかし、SurfaceViewが特定の部分を占めるように強制する方法画面ではなく、画面全体ですか? – user2121

+0

@ user2121「画面の特定の部分」とはどういう意味ですか? –

+0

私は私の質問で述べたように、私は、例えば、画面の半分の50%を占めるようにSurfaceViewをしたいです – user2121

2

RelativeLayoutは、layout_weightをサポートしていません。そのためにはLinearLayoutを使用する必要があります。

もっと読むhttps://developer.android.com/guide/topics/ui/layout/linear.html

でしかし、基本的にこのような何かのように変更します。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/activity_main" 
     android:layout_width="match_parent" 
     android:orientation="vertical" 
     android:layout_height="match_parent" 
     android:weightSum="1"> 

     <SurfaceView 
       android:id="@+id/mainActivity_surfaceView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight=".4"/> 

</LinearLayout> 
+0

上記の更新セクションをご覧ください – user2121

+0

@ user2121この回答に記載されているリンクをお読みください。 –

0

SurfaceViewは、アプリケーションのビュー階層に属していません。バックグラウンド上に別のレイヤーを作成し、そのサイズに応じて配置します。他のすべてのビューはSurfaceView上に表示されます。あなたが望むことをするには、TextureViewを使用する必要があります。

+0

@ user2121答えは役に立ちましたか? –

関連する問題