1

SelectedImageConstraintLayout 안에있는 SelectedImageView으로 사진을 찍어 보여야합니다. 갤러리를 열고 그림을 선택하면 완벽하게 작동하지만 카메라에서는 작동하지 않습니다. SelectedImageConstraintLayout은 전혀 표시되지 않습니다.ConstraintLayout Visibility 카메라로 사진을 찍은 후 표시되지 않습니다.

void OpenCamera() 
{ 
    Intent intent = new Intent(MediaStore.ActionImageCapture); 
    var filename = new File(this.ViewModel.IssuePhotosDirPath, 
          this.ViewModel.TEMP_PHOTO_FILENAME); 
    intent.PutExtra(MediaStore.ExtraOutput, Uri.FromFile(filename)); 
    StartActivityForResult(intent, OPEN_CAMERA_ID); 
} 

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) 
{ 
    base.OnActivityResult(requestCode, resultCode, data); 
    if (resultCode == Result.Ok) 
    { 
     var issuePhotoFilename = System.IO.Path.Combine(this.ViewModel.IssuePhotosDirPath, 
                 this.ViewModel.TEMP_PHOTO_FILENAME); 

     switch(requestCode) 
     { 
      case OPEN_CAMERA_ID: 
       ShowIssueImage(issuePhotoFilename); 
       break; 
      case OPEN_GALLERY_ID: 
       //do something to save the image in temp file before showing it 
       ShowIssueImage(issuePhotoFilename); 
       break; 
     } 
    } 
} 

void ShowIssueImage(string fileName) 
{ 
    if (SelectedImageViewWidth > 0 && SelectedImageViewHeight > 0) 
    { 
      var bitmap = fileName.ResizeAndRotate(SelectedImageViewWidth, SelectedImageViewHeight); 
      SelectedImageView.SetImageBitmap(bitmap); 
      bitmap = null; 
    } 
    else 
    { 
      SelectedImageView.SetImageBitmap(BitmapFactory.DecodeFile(fileName)); 
    } 

    AddImageConstraintLayout.Visibility = ViewStates.Gone; 
    SelectedImageConstraintLayout.Visibility = ViewStates.Visible; 
} 

void RemoveIssueImage() 
{ 
    SelectedImageConstraintLayout.Visibility = ViewStates.Gone; 
    AddImageConstraintLayout.Visibility = ViewStates.Visible; 

    var issuePhotoFilename = System.IO.Path.Combine(this.ViewModel.IssuePhotosDirPath, this.ViewModel.TEMP_PHOTO_FILENAME); 
    System.IO.File.Delete(issuePhotoFilename); 
} 

무엇이 문제입니까?

답변

0

ViewStates.Gone 대신 ViewState.Invisible을 사용하는 것으로 확인되었습니다. ViewState.Gone가 갤러리에서 이미지를 가져 오는 이유는 모르지만.

void RemoveIssueImage() 
{ 
    //Here, I need to change it from ViewStates.Gone to ViewStates.Invisible 
    SelectedImageConstraintLayout.Visibility = ViewStates.Invisible; 

    AddImageConstraintLayout.Visibility = ViewStates.Visible; 

    var issuePhotoFilename = System.IO.Path.Combine(this.ViewModel.IssuePhotosDirPath, this.ViewModel.TEMP_PHOTO_FILENAME); 
    System.IO.File.Delete(issuePhotoFilename); 
} 

이상 ShowIssueImage 함수에서 ViewStates.InvisibleAddImageConstraintLayout.Visibility 변경

.