试图有一个水平滚动视图动态图片

时间:2013-07-05 14:15:17

标签: android image dynamic horizontalscrollview android-volley

我正在尝试用Volley创建一个Android应用程序,它可以拉入尽可能多的图像,然后将它们设置为水平滚动视图。到目前为止,我让他们进来,但无论我做什么,它都不会让我滚动。

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:id="@+id/containerLayout" >

    <HorizontalScrollView 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/textView1"
        android:id="@+id/scrollLayout">

       <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal" >


            <ImageView
                android:id="@+id/niv_large"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="center" />
        </LinearLayout>
    </HorizontalScrollView> 

</RelativeLayout>

Java文件

public class AppActivity extends Activity
{

    private RequestQueue mRequestQueue;
    private ImageLoader imageLoader;
    Button button;



    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate( savedInstanceState );
        mRequestQueue = Volley.newRequestQueue(this);
        imageLoader =  new ImageLoader(mRequestQueue, new DiskBitmapCache(getCacheDir(), 0));
//        final ImageView networkimage = ImageView.class.cast(findViewById(R.id.niv_large));

//        imageLoader.get("http://files.vividscreen.com/soft/b0d52a794a2f44f1a208d1fdf6088125/The-Dark-Knight-Batman-768x1280th.jpg", ImageLoader.getImageListener(networkimage, R.drawable.ic_launcher, R.drawable.ic_launcher));

        ArrayList<String> imageUrls = new ArrayList<String>();

        imageUrls.add( "http://images.cpcache.com/merchandise/514_400x400_Peel.jpg?region=name:FrontCenter,id:28298128,w:16" );
        imageUrls.add( "http://images.cpcache.com/merchandise/514_400x400_NoPeel.jpg?region=name:FrontCenter,id:25042524,w:16" );
        imageUrls.add( "http://michaelkonik.com/wp-content/uploads/2006/06/2014-World-Cup-Logo-400x400.jpg" );
        //imageUrls.add( "http://hdwallsize.com/wp-content/uploads/2013/03/Barcelona-Wallpaper-HD-Lionel-Messi.jpg" );
        //add other image urls as above until done

        LinearLayout containerLayout = new LinearLayout(this);

        LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.MATCH_PARENT);



        setContentView( containerLayout, lParams);         

        for( int i = 0; i < imageUrls.size(); i++ )
        {
            ImageView image = new ImageView( this );

            //Log.e( "Checking image stuffs for null",  "Image= " + image + " url=" + imageUrls.get(i) + "imageLoader=" + ImageLoader.getImageListener( image, R.drawable.ic_launcher, R.drawable.ic_launcher) );
            imageLoader.get( imageUrls.get( i ), ImageLoader.getImageListener( image, R.drawable.ic_launcher, R.drawable.ic_launcher) );
            containerLayout.addView( image  );
        }        
                                                                              // icon loading, icon error
    }

2 个答案:

答案 0 :(得分:0)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:id="@+id/containerLayout" >

    <HorizontalScrollView 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/textView1"
        android:id="@+id/scrollLayout">
       <LinearLayout 
            android:id="@+id/containerlLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal" />

    </HorizontalScrollView> 

</RelativeLayout>

使用xml并将所有图像添加到ID为“containerLayout”的容器布局中 setContentView(main.xml)将起作用。

答案 1 :(得分:0)

您显然没有使用XML布局文件,因为您从未加载它。您提供自己的LinearLayout而不是提供XML布局。这就是你无法滚动的原因。

  1. 删除您实例化的LinearLayout并从中引用R.id.myContainer
  2. setContentView( containerLayout, lParams);替换为setContentView( R.layout.your_xml);
  3. 使用XML布局文件时不必包含参数。

    解决方案:

    XML

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:id="@+id/containerLayout" >
    
        <HorizontalScrollView 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/textView1"
            android:id="@+id/scrollLayout">
    
           <LinearLayout 
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="horizontal" 
                android:id="@+id/myContainer" />
    
        </HorizontalScrollView> 
    
    </RelativeLayout>
    

    爪哇

    public class AppActivity extends Activity
    {
    
        private RequestQueue mRequestQueue;
        private ImageLoader imageLoader;
        Button button;
    
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            // TODO Auto-generated method stub
            super.onCreate( savedInstanceState );
            mRequestQueue = Volley.newRequestQueue(this);
            imageLoader =  new ImageLoader(mRequestQueue, new DiskBitmapCache(getCacheDir(), 0));
    //        final ImageView networkimage = ImageView.class.cast(findViewById(R.id.niv_large));
    
    //        imageLoader.get("http://files.vividscreen.com/soft/b0d52a794a2f44f1a208d1fdf6088125/The-Dark-Knight-Batman-768x1280th.jpg", ImageLoader.getImageListener(networkimage, R.drawable.ic_launcher, R.drawable.ic_launcher));
    
            ArrayList<String> imageUrls = new ArrayList<String>();
    
            imageUrls.add( "http://images.cpcache.com/merchandise/514_400x400_Peel.jpg?region=name:FrontCenter,id:28298128,w:16" );
            imageUrls.add( "http://images.cpcache.com/merchandise/514_400x400_NoPeel.jpg?region=name:FrontCenter,id:25042524,w:16" );
            imageUrls.add( "http://michaelkonik.com/wp-content/uploads/2006/06/2014-World-Cup-Logo-400x400.jpg" );
            //imageUrls.add( "http://hdwallsize.com/wp-content/uploads/2013/03/Barcelona-Wallpaper-HD-Lionel-Messi.jpg" );
            //add other image urls as above until done
    
            // Get a reference to the LinearLayout inside the HorizontalScrollView
            LinearLayout container = (LinearLayout) findViewById(R.id.myContainer);
    
            // Replaced container with R.layout.your_xml where 'your_xml' refers to your XML file. Parameters are also not needed since they are as attributes in the XML tag
            setContentView( R.layout.your_xml);         
    
            for( int i = 0; i < imageUrls.size(); i++ )
            {
                ImageView image = new ImageView( this );
    
                //Log.e( "Checking image stuffs for null",  "Image= " + image + " url=" + imageUrls.get(i) + "imageLoader=" + ImageLoader.getImageListener( image, R.drawable.ic_launcher, R.drawable.ic_launcher) );
                imageLoader.get( imageUrls.get( i ), ImageLoader.getImageListener( image, R.drawable.ic_launcher, R.drawable.ic_launcher) );
    
                // Add the view to myContainer using the referece
                myContainer.addView( image );
    
                //containerLayout.addView( image  );
            }        
    
            // icon loading, icon error
        }
    }