2014-11-17 82 views
1

我使用Html.fromHtml()來獲取內容並將其顯示在我的活動中。爲此,我正在使用ImageGetter。我有一個問題,如果手機無法連接到互聯網的應用程序崩潰,因爲圖片無法加載。相反,我想要一個佔位符圖像保存在我的ldpi/mdpi/...etc文件夾中,只要無法加載圖片就會插入。ScrollView無法與Drawables一起使用Android

我ImageGetter使用URLImageParser它具有以下onPostExecute()方法:

@Override 
    protected void onPostExecute(Drawable result) { 
     //check to see if an image was found (if not could 
     //be due to no internet) 
     if(result ==null){ 
      //the drawable wasn't found so use the image not found 
      //png 
      Drawable imageNotFound = a.getResources().getDrawable(R.drawable.image_not_found); 
      result = imageNotFound; 
     } 

     intrinsicHeight = result.getIntrinsicHeight(); 
     intrinsicWidth = result.getIntrinsicWidth(); 

     DisplayMetrics dm = new DisplayMetrics(); 
     ((WindowManager) c.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(dm); 
     int width = dm.widthPixels -50; 
     int height = width * intrinsicHeight/intrinsicWidth; 

     result.setBounds(0, 0, 0 + width, 0 
       + height); 

     urlDrawable.setBounds(0, 0, 0+width, 0+height); 

     // change the reference of the current drawable to the result 
     // from the HTTP call 
     urlDrawable.drawable = result; 

     // redraw the image by invalidating the container 
     URLImageParser.this.container.invalidate(); 

     // For ICS 
     URLImageParser.this.container.setHeight((URLImageParser.this.container.getHeight() 
     + height)); 

     // Pre ICS 
     URLImageParser.this.container.setEllipsize(null); 
    } 

我已經在這個方法的頂部簡單地插入的,如果(result==null)聲明。但現在,如果圖片可以加載的應用程序完美的作品。如果圖片無法加載,而佔位符被使用,我會得到一些奇怪的行爲。

scrollview從不滾動到屏幕的底部,我不知道這是爲什麼。理論上,我的imageNotFound可繪製(這是一個PNG文件)和從互聯網上下載的文件應該沒有區別。滾動視圖只會稍微移動。

我不知道這是什麼原因造成的。在網上搜索時,大多數人似乎在使用RelativeLayouts時遇到問題。我找不到任何人使用drawable或TableLayouts遇到問題。

我的佈局XML如下:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:paddingBottom = "0dip" 
    android:orientation = "vertical" > 


<TableLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:stretchColumns="0,1" 
    android:shrinkColumns="0,1" 
    android:id = "@+id/SharedTableLayout" 
    android:paddingBottom = "0dip" > 

    <TableRow 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:paddingBottom = "0dip"> 
     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id = "@+id/SharedTableContent" 
      android:layout_span="2" 
      android:gravity = "left" 
      android:paddingLeft = "10dip" 
      android:paddingRight = "10dip" 
      android:paddingTop = "20dip" 
      android:paddingBottom = "0dip"/> 
    </TableRow> 

</TableLayout> 


</ScrollView> 

我真的很感激有這方面的建議,我已經遇到好幾周了。

感謝您的時間

ID爲SharedTableContent TextView的顯示從HTML使用Html.fromHtml()轉換的字符串,因此圖像可以通過文本,這意味着我不能硬編碼的溶液成XML作爲包圍沒有辦法告訴將要提前下載多少圖像,這些都是以編程方式完成的。

+0

相反ScrollView'的'爲什麼不ü嘗試用['名單View'] (http://developer.android.com/guide/topics/ui/layout/listview.html)任何特定的原因和加載圖像使用['volley'](http://developer.android.com/training/volley /request.html)或['picasso'](http://square.github.io/picasso/) – kId

+0

我對android比較陌生,我從來沒有聽說過ListView。會自動滾動嗎? – user3707803

+0

當然,它會滾動'垂直' – kId

回答

0

嘗試將scrollview的佈局寬度更改爲match_parent。

的android:layout_width = 「match_parent」 機器人:layout_height = 「match_parent」

或者試試這個

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView android:id="@+id/ScrollView02" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      xmlns:android="http://schemas.android.com/apk/res/android"> 
<HorizontalScrollView android:id="@+id/HorizontalScrollView01" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content"> 
<ImageView android:id="@+id/ImageView01" 
      android:src="@drawable/pic" 
      android:isScrollContainer="true" 
      android:layout_height="fill_parent" 
      android:layout_width="fill_parent" 
      android:adjustViewBounds="true"> 
</ImageView> 
</HorizontalScrollView> 
</ScrollView> 
+0

奇怪的是,這使得它滾動比平常更遠一點,直到我旋轉手機。然後,它幾乎沒有像以前那樣旋轉。 我也加入了android:fillViewport =「true」,它似乎也沒有做任何事情。 – user3707803

+0

另一個'ScrollView'內的'ScrollView'是一個非常糟糕的想法* – kId

+0

我不認爲我可以像這樣在xml中編寫代碼。帶有編號爲SharedTableContent的textview用於顯示一個可能包含圖像或不包含圖像的HTML字符串。圖像可以在文本塊之間。感謝您的建議 – user3707803