我正在尝试使用SurfaceView。因此,我在布局文件中创建了一个SurfaceView小部件,如下代码所示。我的问题是如何为SurfaceView设置权重?
如下所示,我设置了代码:

android:layout_weight=".4"


但是SurfaceView仍然占据着整个屏幕,我想要的是使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>


更新:

我也尝试了下面的代码,但仍然有一个SurfaceView占据了整个屏幕。我希望在运行以下代码后,有两个SurfaceViews各自占据屏幕的一半,但我只有一个

码:

<?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>

最佳答案

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>

关于android - 如何强制SurfaceView占据屏幕的特定区域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40531178/

10-12 02:37