Insert a view dynamically in a HorizontalScrollView in Android
I'm developing an application for Android tablet 3.0 that has one activity that should be 开发者_JAVA百科scrollable in the horizontal axis, like an e-book.
For that, I'm using a RelativeLayout inside a HorizontalScrollView on my layout. Here is the 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>
This xml file is called main.xml.
What I'm doing in the java file is:
setContentView(R.layout.main);
parent = (ViewGroup) findViewById(R.id.container);
View v = createView(); // Thats working for sure.
parent.addView(v);
But it is not working, the view V doesn't show on the screen. But if i do
addContentView(v)
it adds the view v to the screen (the proof that my method works), but it isn't scrollable since it is outside the HorizontalScrollView. What am I doing wrong?
UPDATE: I tried with that and it also didn't work out:
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);
I don't get a blue background.
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();
// }
// });
Change the width of Relativelayout to wrap_content
.
Try using this method to add the view.
void addView (View child, ViewGroup.LayoutParams params)
EDIT:
Remove android:orientation="horizontal"
from the HorizontalScrollView
you add the view into the relativelayout not into the horizontalscrollview using parent
try with the horizontalscrollview object as you can done with the 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);
精彩评论