Stellen Sie die Layoutparameter dynamisch ein

Ich verwende die CameraPreview-Beispiel-API-Demo. Ich muss einige Ansichten (Schaltfläche usw.) hinzufügen, die die SurfaceView überlagern.

Dazu versuche ich, ihre Parameter festzulegen, aber sie werden die ganze Zeit oben links auf dem Bildschirm angezeigt.

Dies ist die onCreate-Methode des Codes:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

        btnTakePhoto = new Button(this);
        btnTakePhoto.setBackgroundResource(android.R.drawable.ic_menu_camera);


        /*Set container*/
        mPreview = new Preview(this);
        setContentView(mPreview);

        /*Set button params and add it to the view*/
        RelativeLayout.LayoutParams buttonParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        buttonParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        buttonParams.addRule(RelativeLayout.CENTER_VERTICAL);
        addContentView(btnTakePhoto, buttonParams);


        numberOfCameras = Camera.getNumberOfCameras();

        CameraInfo cameraInfo = new CameraInfo();
        for (int i = 0; i < numberOfCameras; i++) {
            Camera.getCameraInfo(i, cameraInfo);
            if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
                defaultCameraId = i;
            }
        }
    }

Muss sagen, dass die Werte hier sind

RelativeLayout.LayoutParams buttonParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

werden gut aktualisiert, wenn ich sie ändere. Was sich nicht ändert, ist das, was die Methode addRule () enthält

Antworten auf die Frage(5)

Ihre Antwort auf die Frage