【问题标题】:Showing/Hiding ImageView in RelativeLayout在 RelativeLayout 中显示/隐藏 ImageView
【发布时间】:2014-09-24 14:59:42
【问题描述】:

我有一个相对布局,它有两个孩子,一个 ImageView 和一个 ProgressBar。在加载 ImageView 的图像时,我想显示旋转的进度条,一旦图像完成,我想隐藏进度条并显示图像。我永远无法显示图像,但进度条显示得很好。我已经验证图像正在加载,这似乎是一个布局问题,但超出了我的范围......

这是我的布局文件

 <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center">
        <ImageView
            android:layout_width="110dp"
            android:layout_height="110dp"
            android:visibility="visible"/>
        <ProgressBar
            android:layout_width="110dp"
            android:layout_height="110dp"/>
    </RelativeLayout>

加载图片时...

final RelativeLayout relLayout = (RelativeLayout)convertView;
final ImageView imageView = (ImageView)relLayout.getChildAt(0);
final ProgressBar bar = (ProgressBar)relLayout.getChildAt(1);

bar.setIndeterminate(true);
bar.setVisibility(View.VISIBLE);
imageView.setVisibility(View.GONE);

在我的 imageLoader 的 onSuccess 中

bar.setVisibility(View.GONE);
imageView.setVisibility(View.VISIBLE);
imageView.setImageBitmap(resizedBitmap);
relLayout.requestLayout(); // also tried invalidate(), and nothing at all

帮助?

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    改变一下

    imageView.setVisibility(View.GONE);

    与

    imageView.setVisibility(View.INVISIBLE);

    同时检查this link.

    【讨论】:

    • 这实际上是正确的答案......我很惊讶。我的印象是,将其设置为 INVISIBLE 仍会保留布局空间,这就是我选择 GONE 的原因。切换到 INVISIBLE 后,我就可以轻松隐藏/显示微调器或图像
    • 我曾经遇到过这个问题。我这样做了,问题就解决了。我不明白为什么这个解决方案被否决了。奇怪的人...
    【解决方案2】:

    首先在您的 XML 中将此行放入您的 ImageView android:visibility="gone"

    然后在您的代码中使用 asynkTask 来显示 progressBarr,并在下载完成时隐藏 proogressBar 并显示 ImageView

    public void getImage(){
       new AsyncTask<Void, Void, Boolean>(){
          @Override
          protected Boolean doInBackground(Void... params){
             //Code to load image, take care don't change the UI because it can break the app
          }
          @Override
          protected void onProgressUpdate(Integer... values){
             //Here you can update your progressBar
          }
          @Override
          public void onPostExecute(Boolean result){
             //When the image finish the load here you can hide the progressBar and show the ImageView
            bar.setVisibility(View.INVISIBLE);
            imageView.setVisibility(View.VISIBLE);
          }
       }.execute();
    }
    

    希望对你有所帮助

    【讨论】:

      【解决方案3】:
      Try to keep id for the views because when the item is being gone, then the position of the view will get changed
      please try like this
      
      Your Layout:
       <?xml version="1.0" encoding="utf-8"?>
          <RelativeLayout
              xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:gravity="center">
              <ImageView
                  android:id="@+id/img_view"
                  android:layout_width="110dp"
                  android:layout_height="110dp"
                  android:visibility="visible"/>
              <ProgressBar
                  android:id="@+id/progress_bar"
                  android:layout_width="110dp"
                  android:layout_height="110dp"/>
          </RelativeLayout>
      
      In your java class:
      
      ImageView imgView = (ImageView)findviewbyId(R.id.img_view);
      ProgressBar progressBar = (ProgressBar)findviewById(R.id.progress_bar);
      imgView.setVisiblity(View.INVISIBLE);
      progressBar.setIndeterminate(true);
      In your oncomplete listener
      imgView.setVisibility(View.VISIBLE);
      progressBar.setVisibility(VIEW.INVISBLE);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-11
        • 1970-01-01
        相关资源
        最近更新 更多