我正在推出自己的相机应用程序,因此我使用的是带有横向方向的SurfaceView作为标准。
我要做的是,让SurfaceView膨胀以获得一个按钮。但我希望按钮显示在纵向底部的中心,就像大多数相机应用程序一样。我正在膨胀的按钮布局如下,我不确定哪种控件组合会给我所需的结果。
我的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="right"
>
<Button
android:id="@+id/takepicture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" * Take Picture "
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_margin="10px"
/>
</LinearLayout>
感谢您的帮助! =]
答案 0 :(得分:0)
玩layout_weight
。试试这个:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="right"
>
<com.YOURSurfaceView android:layout_width="fill_parent" android:background="#ff0" android:layout_weight=".2"
android:layout_height="fill_parent" >
</com.YOURSurfaceView>
<Button
android:id="@+id/takepicture"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text=" * Take Picture "
android:layout_weight="1"
android:layout_margin="10px"
/>
</LinearLayout>
答案 1 :(得分:-1)
感谢阿瑞斯,感谢您的回答。我在这里挖了一点,并找到了一个LinearLayout的解决方案,但从我的理解,一切都有它的位置,但一般RelativeLayout提供更好的性能,所以我试验了一下,我现在得到这个,这对我有用。请注意,我正在使用图像作为按钮,因此您可能希望升级它包括按下其他按钮等并适当缩放(这是我接下来要做的)。但在准系统中,这对我有用。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:baselineAligned="false"
android:gravity="right"
android:orientation="horizontal" >
<RelativeLayout
android:layout_width="40dp"
android:layout_height="fill_parent"
android:gravity="center_vertical" >
<ImageButton
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:src="@drawable/lens_2" />
</RelativeLayout>
</RelativeLayout>
上面的我在SurfaceView上夸大了,我声明如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
mPreview = new CameraPreview(this);
setContentView(mPreview);
LayoutInflater controlInflater = LayoutInflater.from(getBaseContext());
View viewControl = controlInflater.inflate(R.layout.control, null);
LayoutParams layoutParamsControl
= new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
this.addContentView(viewControl, layoutParamsControl);
}
希望这有帮助。