我在Android App中工作 在其中 相对布局是
<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="2dp"
android:adjustViewBounds="true"
android:background="@drawable/background" />
<RelativeLayout
android:id="@+id/mymainlayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
>
</RelativeLayout>
我的问题是我无法在此相对布局中以编程方式绘制所有ImageView,它只显示一个图像。 这是我的代码
for (int i = 0; i < realAnswer; i++) {
arrayofImages[i] = new ImageView(this);
arrayofImages[i].setImageResource(imageId[imageNumber]);
arrayofImages[i].setId(i);
if(i!=0)
{
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.LEFT_OF, arrayofImages[i-1].getId());
//arrayofImages[i].setLayoutParams(params);
nn.addView(arrayofImages[i],params);
}
else
{
nn.addView(arrayofImages[i]);
}
}
这里nn是我的主要布局
任何帮助请??? ???
答案 0 :(得分:2)
除
外,您的代码工作正常 params.addRule(RelativeLayout.LEFT_OF, arrayofImages[i-1].getId());
RelativeLayout.LEFT_OF 继续将图片设置在左侧,您无法看到它。
用
替换上面的代码params.addRule(RelativeLayout.RIGHT_OF,
arrayofImages[i - 1].getId());
这将以水平方向显示图像。
像这样更新你的for循环
for (int i = 0; i < 5; i++) {
arrayofImages[i] = new ImageView(this);
arrayofImages[i].setImageResource(R.drawable.ic_launcher);
arrayofImages[i].setId(i);
if (i != 0) {
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.RIGHT_OF,
arrayofImages[i - 1].getId());
// arrayofImages[i].setLayoutParams(params);
nn.addView(arrayofImages[i], params);
} else {
nn.addView(arrayofImages[i]);
}
}
答案 1 :(得分:1)
如果您仅使用RelativeLayout
来保存您正在添加的imageview
,请使用LinearLayout
。这将解决您的问题。
答案 2 :(得分:0)
看看这可能对您有用:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPagerAdapter adapter = new ViewPagerAdapter(this, imageArra);
ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager);
myPager.setAdapter(adapter);
myPager.setCurrentItem(0);
}
private int imageArra[] = { R.drawable.gallery_photo_1, R.drawable.gallery_photo_2,
R.drawable.gallery_photo_3, R.drawable.gallery_photo_5,
R.drawable.gallery_photo_6, R.drawable.gallery_photo_7,
R.drawable.gallery_photo_8, R.drawable.ic_launcher };
}
}
和ViewPagerAdapter:
public class ViewPagerAdapter extends PagerAdapter {
Activity activity;
int imageArray[];
public ViewPagerAdapter(Activity act, int[] imgArra) {
imageArray = imgArra;
activity = act;
}
public int getCount() {
return imageArray.length;
}
public Object instantiateItem(View collection, int position) {
ImageView view = new ImageView(activity);
view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
view.setScaleType(ScaleType.FIT_XY);
view.setBackgroundResource(imageArray[position]);
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState() {
return null;
}
}
xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/myfivepanelpager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" >
</ImageView>
</android.support.v4.view.ViewPager>
</LinearLayout>