2011-08-25 28 views
3

我正在開發一款適用於Android平板電腦3.0的應用程序,該應用程序有一個應該可以在橫軸上滾動的活動,就像電子書一樣。在Android中的Horizo​​ntalScrollView中動態插入視圖

爲此,我在我的佈局的Horizo​​ntalScrollView內使用RelativeLayout。這裏是XML:

<?xml version="1.0" encoding="utf-8"?> 

    <HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="800px" 
    android:id="@+id/horizontalScroll" 
    android:background="#C6D7D2" android:layout_height="600px"> 

    <RelativeLayout android:id="@+id/container" android:layout_width="fill_parent" android:layout_height="fill_parent">   
    </RelativeLayout> 


</HorizontalScrollView> 

這個XML文件被稱爲main.xml。

我做在Java文件是什麼:

setContentView(R.layout.main); 
parent = (ViewGroup) findViewById(R.id.container); 
View v = createView(); // Thats working for sure. 
parent.addView(v); 

但它不工作,視圖V不顯示在屏幕上。但是,如果我這樣做

addContentView(v) 

它添加視圖V屏幕(我的方法工作的證明),但因爲它是Horizo​​ntalScrollView外面是不可滾動。我究竟做錯了什麼?

更新: 我試圖與它也沒有工作:

setContentView(R.layout.main); 
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
ViewGroup parent = (ViewGroup) findViewById(R.id.container); 
View v = new View(this); 
v.setBackgroundColor(Color.BLUE); 
parent.addView(v,params); 

我沒有得到一個藍色的背景。

+0

您是否嘗試將您的RelativeLayout更改爲水平方向的LinearLayout? –

+0

你爲什麼不把你的容器作爲'RelativeLayout'。 –

+0

您確定您將正確的layoutparams和高度寬度設置爲該視圖。需要看看你的'createView()'方法。 – Ronnie

回答

2

將Relativelayout的寬度更改爲wrap_content

嘗試使用此方法添加視圖。

void addView (View child, ViewGroup.LayoutParams params) 

編輯:
HorizontalScrollView

+0

已經嘗試過,沒有工作.LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); –

+0

取消方向也不起作用。感謝您的幫助。你也可以查看我在這個問題上所做的更新。 –

+0

問題在於LayoutParams的高度和寬度必須與wrap_content或fill_parent不同。不知道爲什麼,但這解決了我的問題。謝謝。 –

1

刪除android:orientation="horizontal"您使用父

嘗試,你可以與RelativeLayout的

完成horizo​​ntalscrollview對象添加視圖到RelativeLayout的不進horizo​​ntalscrollview
+0

我無法將其添加到horizo​​ntalscrollview,因爲horizo​​ntalscrollview只能有一個孩子,這是佈局 –

0
Try this code. 

ImageView imageView = new ImageView(this); 
    imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); 
    imageView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
       LayoutParams.WRAP_CONTENT)); 
    imageView.setBackgroundColor(Color.blue); 


parent.addView(v,params); 
21
HorizontalScrollView scrollView = (HorizontalScrollView) findViewById(R.id.scrollView1); 

     LinearLayout topLinearLayout = new LinearLayout(this); 
     // topLinearLayout.setLayoutParams(android.widget.LinearLayout.LayoutParams.FILL_PARENT,android.widget.LinearLayout.LayoutParams.FILL_PARENT); 
     topLinearLayout.setOrientation(LinearLayout.HORIZONTAL); 

     for (int i = 0; i < 15; i++){ 



      final ImageView imageView = new ImageView (this); 

      imageView.setTag(i); 

      imageView.setImageResource(R.drawable.ic_launcher); 

      topLinearLayout.addView(imageView); 

      imageView.setOnClickListener(new OnClickListener() 
      { 

       @Override 
       public void onClick(View v) 
       { 
        // TODO Auto-generated method stub 
        Log.e("Tag",""+imageView.getTag()); 
       } 
      }); 


     } 

     scrollView.addView(topLinearLayout); 


//  ImageView img=(ImageView)findViewById(R.id.imageView1); 
//  final ImageLoader imageLoader = ImageLoader.getInstance(); 
//  
//  
//  
//  ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) 
//  .threadPoolSize(3) 
//  .threadPriority(Thread.NORM_PRIORITY - 2) 
//  .memoryCacheSize(1500000) // 1.5 Mb 
//  .discCacheSize(50000000) // 50 Mb 
//  .httpReadTimeout(10000) // 10 s 
//  .denyCacheImageMultipleSizesInMemory() 
//  .enableLogging() // Not necessary in common 
//  .build(); 
// // Initialize ImageLoader with configuration. 
// ImageLoader.getInstance().init(config); 
//  
//  final DisplayImageOptions options = new DisplayImageOptions.Builder() 
//  .showStubImage(R.drawable.ic_launcher) 
//  .cacheInMemory() 
//  .cacheOnDisc() 
//  .build(); 
//  
//  imageLoader.displayImage("http://3.bp.blogspot.com/_Sd45ASngYHA/TVC78RORKoI/AAAAAAAAARk/y0GcNkTmb40/s1600/android+logo1.jpg",img,options); 
//  
//  img.setOnClickListener(new OnClickListener() 
//  { 
//   
//   @Overridt 
//   public void onClick(View v) 
//   { 
//    // TODO Auto-generated method stub 
//    Dialog d =new Dialog(TestActivity.this); 
//    d.setContentView(R.layout.dialog); 
//   
//    d.setCancelable(true); 
//    
//    ImageView d_img=(ImageView)d.findViewById(R.id.dialog_img); 
////    d.setLayoutParams(L) 
//    imageLoader.displayImage("http://3.bp.blogspot.com/_Sd45ASngYHA/TVC78RORKoI/AAAAAAAAARk/y0GcNkTmb40/s1600/android+logo1.jpg",d_img,options); 
//    
//    d.show(); 
//    } 
//  }); 
+0

很好,謝謝你的完整示例! – Buffalo

+0

謝謝......作品完美 – jose920405

相關問題