2014-11-17 2 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) если заявление в верхней части этого метода. Но теперь, если изображения могут быть загружены, приложение работает отлично. Если изображения не могут быть загружены и вместо них используются заполнители, я получаю нечетное поведение.

Прокрутка никогда не прокручивается в нижней части экрана, и я понятия не имею, почему это так. Теоретически не должно быть разницы между моим imageNotFound drawable (который является файлом png) и файлами, загруженными из Интернета. Прокрутка будет немного двигаться.

Я понятия не имею, что вызывает это. При поиске в Интернете у большинства людей, похоже, возникают проблемы с RelativeLayouts. Я не мог найти никого, у кого проблемы с drawables или 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> 

Я бы очень признателен за любые предложения по этому вопросу, я застрял на нем в течение нескольких недель.

Спасибо за ваше время

TextView с идентификатором SharedTableContent отображает строку, которая была преобразована из 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

да, конечно, он будет прокручивать 'vertically' – kId

ответ

0

Попробуйте изменить ширину макета прокрутки в match_parent.

андроида: 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 используется для отображения строки из html, которая может содержать или не содержать изображения. И изображения могут находиться между кусками текста. Спасибо за ваши предложения, кстати – user3707803