Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android RelativeLayout不移动项目_Java_Android_Android Relativelayout - Fatal编程技术网

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中很难做到这一点