ScrollView无法使用Drawables Android

时间:2014-11-17 10:09:10

标签: android orientation scrollview drawable tablelayout

我正在使用Html.fromHtml()来获取内容并将其显示在我的活动上。为此,我使用的是ImageGetter。我有一个问题,如果手机无法连接到互联网,应用程序崩溃,因为图片无法加载。相反,我想在我的ldpi/mdpi/...etc文件夹中保存一个占位符图像,只要无法加载图片,就会插入该图像。

我的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);
    }

我只是在此方法的顶部插入了if (result==null)语句。但现在如果可以加载图片,应用程序可以正常运行。如果无法加载图像并使用占位符,我会得到一些奇怪的行为。

scrollview永远不会滚动到屏幕的底部,我不知道为什么会这样。从理论上讲,我的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>

我真的很感激任何有关这方面的建议,我已经坚持了好几个星期。

感谢您的时间

带有id SharedTableContent的TextView显示一个使用Html.fromHtml()从html转换的字符串,因此图像可能被文本包围,这意味着我无法将解决方案硬编码到xml中,因为无法知道有多少图像将提前下载,这些都是以编程方式完成的。

1 个答案:

答案 0 :(得分:0)

尝试将scrollview的布局宽度更改为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>