Android在SurfaceView周围应用边框

Android在SurfaceView周围应用边框,android,Android,我有一个SurfaceView,我想为其显示一个20dp大小的边框,该边框将围绕SurfaceView流动。我需要在16:9纵横比中使用“SurfaceView”,因此我将SurfaceView的大小保持在161x286的比例中 要在曲面视图周围显示边框,我有以下XML实现 <RelativeLayout android:id="@+id/my_surface_view_holder" android:layout_height="161dp" android:l

我有一个
SurfaceView
,我想为其显示一个
20dp
大小的边框,该边框将围绕
SurfaceView
流动。我需要在
16:9
纵横比中使用“SurfaceView”,因此我将
SurfaceView
的大小保持在
161x286
的比例中

要在曲面视图周围显示边框,我有以下XML实现

<RelativeLayout 
    android:id="@+id/my_surface_view_holder"
    android:layout_height="161dp"
    android:layout_width="286dp"
    android:padding="20dp"
    android:focusable="true"
    android:clickable="true"
    android:background="#fff"
    >
    <SurfaceView 
        android:id="@+id/video_surface_view"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" />
</RelativeLayout>

上面的代码正确地显示了
SurfaceView
周围的边框,但它打破了视频的16:9纵横比,因为我已经给出了显示边框的
20dp
填充

如果我根据边框大小调整纵横比,则边框设置不均匀,在顶部/底部不同,在左侧/右侧不同

那么,如何通过将SurfaceView的纵横比保持为161x286大小来显示它周围的边框呢


谢谢。

我找到了路,而且很简单。我将SurfaceView的大小设置为161X286,然后将RelativeLayout设置为wrap contains(宽度和高度),然后将padding设置为RelativeLayout(显示SurfaceView周围的边框)

因此,我的SurfaceView保持16:9的纵横比,并且它的背景边界为RelativeLayout


谢谢大家的评论

我不太明白。你想要背景,边框,然后是表面吗?在RelativeLayout的左侧和右侧保留边距如何?是的,我需要曲面的边框,为此,我在相对布局中添加了曲面视图,该相对布局设置了背景图像,并设置了一个填充,作为曲面到曲面的边框视图。这是我使用的技巧,但它打破了我的视频的纵横比。保持相对布局高度和宽度分别为(161+20),(286+20)。试试这个,我希望它对你有用。@Android_疯狂:161+20和286+20的纵横比不是16:9。@PP因为你给relativelayout加了填充,所以surfaceview的高度和宽度分别是161-20和286-20,打破了16:9的比例。如果你把高度和宽度增加20,那么surfaceview的高度和宽度将是161和286这是16:9的比例。这是它背后的逻辑。如果你对这个逻辑感到满意,那么试试看会发生什么。