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です。

ShowIssueImage機能で
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); 
} 

以降、ViewStates.Invisibleに変更AddImageConstraintLayout.Visibility

関連する問題