Java Android RelativeLayout不移动项目
我正在尝试创建一个“帖子”形式的视图组,我需要这个视图在左上角有一个图像,然后在帖子的右侧有一个用户名和内容,彼此对齐,但是我似乎无法移动布局。它们只是保持重叠Java Android RelativeLayout不移动项目,java,android,android-relativelayout,Java,Android,Android Relativelayout,我正在尝试创建一个“帖子”形式的视图组,我需要这个视图在左上角有一个图像,然后在帖子的右侧有一个用户名和内容,彼此对齐,但是我似乎无法移动布局。它们只是保持重叠 public ViewGroup generateViewGroup(Context context){ RelativeLayout rl = new RelativeLayout(context); WindowManager wm = (WindowManager) context.getSystemService
public ViewGroup generateViewGroup(Context context){
RelativeLayout rl = new RelativeLayout(context);
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Point p = new Point();
wm.getDefaultDisplay().getSize(p);
TextView tvUsername = new TextView(context);
tvUsername.setText(userName);
TextView tvPostContent = new TextView(context);
tvPostContent.setText(postContent);
ImageView iv = new ImageView(context);
RelativeLayout.LayoutParams lpTvUsername = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
lpTvUsername.addRule(RelativeLayout.RIGHT_OF,0);
lpTvUsername.addRule(RelativeLayout.ALIGN_TOP,0);
tvUsername.setLayoutParams(lpTvUsername);
RelativeLayout.LayoutParams lpTvPostContent = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
lpTvPostContent.addRule(RelativeLayout.RIGHT_OF,0);
lpTvPostContent.addRule(RelativeLayout.BELOW,1);
tvPostContent.setLayoutParams(lpTvPostContent);
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
if (userPic==null) Log.e("generateViewGroup","userPic is null");
iv.setImageDrawable(userPic);
rl.addView(iv, 0);
rl.addView(tvUsername,1);
rl.addView(tvPostContent);
rl.setLayoutParams(lp);
}
我以以下方式修改了代码,并将其设置为空白活动的内容视图:
RelativeLayout rl = new RelativeLayout(context);
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Point p = new Point();
wm.getDefaultDisplay().getSize(p);
//
// integer ID's for all the Views;
int ivID = 0x0FD;
int tvUserNameID = 0x0FE;
int tvPostContentID = 0x0FF;
//
TextView tvUsername = new TextView(context);
//
tvUsername.setId(tvUserNameID); // Set the ID
//
tvUsername.setText(userName);
TextView tvPostContent = new TextView(context);
//
tvPostContent.setId(tvPostContentID); // Set the ID
//
tvPostContent.setText(postContent);
ImageView iv = new ImageView(context);
//
iv.setId(ivID); // Set the ID
//
RelativeLayout.LayoutParams lpTvUsername = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
//
//lpTvUsername.addRule(RelativeLayout.RIGHT_OF,0);
//lpTvUsername.addRule(RelativeLayout.ALIGN_TOP,0);
//
// Reference the ID not the Index;
lpTvUsername.addRule(RelativeLayout.RIGHT_OF,ivID);
lpTvUsername.addRule(RelativeLayout.ALIGN_TOP,ivID);
//
tvUsername.setLayoutParams(lpTvUsername);
RelativeLayout.LayoutParams lpTvPostContent = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
//
// lpTvPostContent.addRule(RelativeLayout.RIGHT_OF,0);
// lpTvPostContent.addRule(RelativeLayout.BELOW,1);
//
// Reference the ID not the Index;
lpTvPostContent.addRule(RelativeLayout.RIGHT_OF,ivID);
lpTvPostContent.addRule(RelativeLayout.BELOW,tvUserNameID);
//
tvPostContent.setLayoutParams(lpTvPostContent);
LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
if (userPic==null) Log.e("generateViewGroup","userPic is null");
iv.setImageDrawable(userPic);
rl.addView(iv, 0);
rl.addView(tvUsername,1);
rl.addView(tvPostContent);
rl.setLayoutParams(lp);
setContentView(rl);
问题的主要原因是,在设置LayoutParams时,您引用的是索引而不是视图ID。您不想膨胀XML的具体原因是什么?我试图坚持使用java,因为我们有许多其他类与此http请求一起工作,所以在XML中很难做到这一点