Вставить представление динамически в HorizontalScrollView в Android

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

Для этого я использую RelativeLayout внутри HorizontalScrollView на моем макете. Вот 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 на экран (доказательство того, что мой метод работает), но он не прокручивается, так как он находится вне HorizontalScrollView. Что я делаю не так?

ОБНОВЛЕНИЕ: Я пробовал с этим, и это тоже не сработало:

 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); 

Я не получаю синий фон.

Измените ширину Relativelayout на wrap_content .

Попробуйте использовать этот метод, чтобы добавить представление.

 void addView (View child, ViewGroup.LayoutParams params) 

РЕДАКТИРОВАТЬ:
Удалите android:orientation="horizontal" из HorizontalScrollView

 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(); // } // }); 

Вы добавляете представление в relativelayout не в horizontalscrollview, используя родительский

Попробуйте с объектом horizontalscrollview, как вы можете сделать с relativelayout

 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);