Android动态加载布局

2019-12-10 19:11:25王旭

上面的LinearLayout就是放这些头像的,其他的就不多说了,下面我们看看怎么来给我们的adapter里面加这些头像

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(100, 100); 
     params.setMargins(8, 0, 8, 0); 
     roundedImageView.setLayoutParams(params); 
     roundedImageView.setScaleType(ImageView.ScaleType.FIT_XY); 
     if (!"".equals(replyUrl.get(m)) && replyUrl.get(m) != null) { 
      ImageLoader.getInstance().displayImage(replyUrl.get(m), roundedImageView); 
     } else { 
      roundedImageView.setImageDrawable(context.getResources().getDrawable(R.drawable.usericon)); 
     } 
     if (m == count) { 
      roundedImageView.setImageDrawable(context.getResources().getDrawable(R.drawable.wozaixianchangxiangqing_shenglve)); 
     } else { 
      holder.llReplyIcons.addView(roundedImageView); 
     } 

我们先定义一个LayoutParams,设置头像图片的一些属性,包括大小,margins以及scaletype等,然后给它设置到我们的ImageView中,最后holder.llReplyIcons.addView(roundedImageView);  添加子布局就ok了。京东这个是固定了头像的个数,而我写的则是根据手机屏幕的宽度添加头像:

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
  int width = wm.getDefaultDisplay().getWidth(); 
  int count = width / 116; 

count就是可以添加的头像,当View中的i等于我们的count的时候,我们可以用最后的省略号的图片来显示。
之前在群里有人问我这个头像点击跳转到个人主页怎么实现的,想了一下,是不是可以用手机触摸的坐标来算一下坐标位于第几个头像之间,觉得那样比较麻烦。我们可以在添加子布局头像的时候,就给这个子布局设置点击事件,就可以了,看一下代码:

for (int m = 0; m < replyUrl.size(); m++) { 
     RoundedImageView roundedImageView = new RoundedImageView(context); 
     final int finalM = m; 
     roundedImageView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if (story.getReply_user_id().get(finalM) != null) { 
        Intent intent = new Intent(context, MyStoryActivity.class); 
        intent.putExtra("userid", story.getReply_user_id().get(finalM)); 
        intent.putExtra("user_iconurl", story.getReply_user_icon_url().get(finalM)); 
        intent.putExtra("username", story.getReply_user_name().get(finalM)); 
        intent.putExtra("flag", "others"); 
        context.startActivity(intent); 
       } else { 
        Intent intent = new Intent(context, StoryFavoriteAcitvity.class); 
        intent.putExtra("storyId", story.getId()); 
        context.startActivity(intent); 
       } 
 
      } 
     }); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(100, 100); 
     params.setMargins(8, 0, 8, 0); 
     roundedImageView.setLayoutParams(params); 
     roundedImageView.setScaleType(ImageView.ScaleType.FIT_XY); 
     if (!"".equals(replyUrl.get(m)) && replyUrl.get(m) != null) { 
      ImageLoader.getInstance().displayImage(replyUrl.get(m), roundedImageView); 
     } else { 
      roundedImageView.setImageDrawable(context.getResources().getDrawable(R.drawable.usericon)); 
     } 
     if (m == count) { 
      roundedImageView.setImageDrawable(context.getResources().getDrawable(R.drawable.wozaixianchangxiangqing_shenglve)); 
     } else { 
      holder.llReplyIcons.addView(roundedImageView); 
     } 
 
    }