Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用SurfaceHolder.setFixedSize(宽度、高度)设置SurfaceView的大小_Android_Size_Surfaceview - Fatal编程技术网

Android 使用SurfaceHolder.setFixedSize(宽度、高度)设置SurfaceView的大小

Android 使用SurfaceHolder.setFixedSize(宽度、高度)设置SurfaceView的大小,android,size,surfaceview,Android,Size,Surfaceview,作为MainActivity类布局的一部分,我有一个SurfaceView: <LinearLayout android:id="@+id/screen_game" android:layout_width="match_parent" android:layout_height="wrap_content" android:bac

作为MainActivity类布局的一部分,我有一个SurfaceView:

                <LinearLayout
                android:id="@+id/screen_game"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#0000FF"
                android:orientation="vertical"

                >
                           <Button
                        android:id="@+id/button15"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Button" />

                           <com.ecslayout.BackgammonBoardView
                               android:id="@+id/backgammonBoardView1"
                               android:layout_width="100dp"
                               android:layout_height="100dp" />



                </LinearLayout>
关于setFixedSize,我的一个问题是函数的参数代表什么单位?整数是点还是像素?我正在阅读文档:

http://developer.android.com/reference/android/view/SurfaceHolder.html
然而,它只是说setFixedSize的参数是整数。我还不知道它在哪里描述了整数可能代表的单位。我是不是想从一个不好的位置设置SurfaceView的大小 还是有其他问题?我正在开发目标API 19,最小API为9

另外,我想我看到了现在正在发生的事情setFixedSize()改变了画布的分辨率,但并没有像我想做的那样改变其在线性布局中的宽度和高度。我已经在后面的代码中得到了屏幕的宽度和高度,我打算做的是更改SurfaceView的宽度和高度,因为它存在于布局中

p.p.S.我原计划在ScrollView中使用SurfaceView,但现在我看到这种方法可能不可行。我从这篇文章中了解到更多:

https://groups.google.com/forum/#!msg/android-developers/zkdnM0G225I/tt_FJGyOkB4J

谢谢

您可以重写SurfaceView类的onSizeChanged()函数来获取和设置视图的大小

protected void onSizeChanged (int w, int h, int oldw, int oldh)
当屏幕大小发生变化时,调用该类

我还注意到您的xml代码有:

android:layout_width="100dp"
android:layout_height="100dp"
这可能就是您无法更改大小的原因

作为第二种选择,您可以通过设置布局参数来设置大小(不确定这是否适用于ScrollView):


我在该方法上使用了@Override,并且无论我是否调用setFixedSize(),它都会在构造函数之后被调用。但我仍然无法更改SurfaceView的大小,它被固定在100dp x 100dp。我看到它有一个黑色背景。要查看
setFixedSize()
的实际操作,请参阅Grafika()中的“硬件定标器练习器”活动。快速演示:
android:layout_width="100dp"
android:layout_height="100dp"
@Override
public void surfaceCreated(SurfaceHolder holder) {
    android.view.ViewGroup.LayoutParams lp = this.getLayoutParams();
    lp.width = 1000; // required width
    lp.height = 1000; // required height
    this.setLayoutParams(lp);
}