TextView可见性Xamarin android

问题描述

我创建了一个图像视图,并在其上方创建了一个文本视图。我的目的是,如果有图像,我想显示我的imageview,否则,我想删除该imageview并显示说“ no image”的textview,这是我的xml代码

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp">
        <TextView
             android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Item Image: "
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView9"
             android:textColor="@android:color/holo_blue_dark"/>
    <ImageView
            android:src="@android:drawable/ic_menu_gallery"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:minWidth="25px"
            android:minHeight="25px"
            android:id="@+id/imageView1"
             android:layout_toRightOf="@id/textView9"/>  
            
            <TextView
             android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="No Image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/textView10"
             
         android:layout_toRightOf="@id/textView9"
         />

        
        </RelativeLayout>

这是我的代码

ImageView imgv = view.FindViewById<ImageView>(Resource.Id.imageView1);
textview10 = view.FindViewById<TextView>(Resource.Id.textView10);
            textview10.Visibility = ViewStates.Invisible;

 private void Ws_getimg_clrCompleted(object sender,WSitems.getimg_clrCompletedEventArgs e)
        {
            Byte[] data = e.Result.datab;
            if (data != null)
            {
               
                MemoryStream mem = new MemoryStream(data);
                Android.Graphics.Bitmap originBitmap = BitmapFactory.DecodeStream(mem);
                imgv.SetimageBitmap(originBitmap);
            } 

            else
            {
                
                imgv.Visibility = ViewStates.Gone;
                textview10.Visibility = ViewStates.Visible;
                
            }
}

我从网络服务获取图像。问题是,当没有图像但textview变得不可见时,只有imageview消失。为什么?我该怎么办?预先感谢。

解决方法

您可以使用FFImageLoading来替换webservice,以便将图片加载到互联网上。

  ImageView imageView1 = FindViewById<ImageView>(Resource.Id.imageView1);
            TextView textView10 = FindViewById<TextView>(Resource.Id.textView10);
            textView10.Visibility = ViewStates.Invisible;
           // string urlToImage = "http://www.123raw.com/includes/templates/custom/images/123raw_mainpic_01.jpg";
            string urlToImage = "http://www.123raw.com/includes/templates/custom/images/12311raw_mainpic_01.jpg";

            var config = new FFImageLoading.Config.Configuration()
            {
                ExecuteCallbacksOnUIThread = true
            };
            ImageService.Instance.Initialize(config);
            ImageService.Instance.LoadUrl(urlToImage).Error(exception =>
            {
                imageView1.Visibility = ViewStates.Gone;
                textView10.Visibility = ViewStates.Visible;
            }).Into(imageView1);

如果无法加载图像,请在此处运行GIF。

enter image description here

,

这是我的代码:

]