android – 以编程方式无法在RelativeLayout中对齐ImageView

前端之家收集整理的这篇文章主要介绍了android – 以编程方式无法在RelativeLayout中对齐ImageView前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我无法将imageview添加到相对布局中.我想将图像添加到我使用RelativeLayout动态创建的菜单项列表中.我的所有菜单项都显示正常并且按顺序排列但是当我尝试为每个项目添加图像时,我只得到一个箭头并且它不是垂直居中的.以下是我的代码.

在我的XML文件

在我的代码中:

  1. private void buildMenu(String name,int id) {
  2. String[] menuItems = getResources().getStringArray(pMenus[id]);
  3. // Get the rel layout from xml
  4. RelativeLayout container = (RelativeLayout) findViewById(R.id.pMenu);
  5. int imageId=1;
  6. Typeface tf = Typeface.createFromAsset(this.getAssets(),"mreavesmodot-reg.otf");
  7. for(String menuItem: menuItems) {
  8. // Defining the layout parameters
  9. RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
  10. RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
  11. StyledButton menuImage = new StyledButton(this);
  12. menuImage.setBackgroundResource(R.drawable.menu_button);
  13. menuImage.setText(menuItem);
  14. menuImage.setTypeface(tf);
  15. menuImage.setTextSize(19);
  16. menuImage.setPadding(20,0);
  17. menuImage.setTextColor(Color.WHITE);
  18. menuImage.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
  19. menuImage.setOnClickListener(getOnClickListener(menuImage,name));
  20. menuImage.setId(imageId);
  21. if(imageId==1) {
  22. lp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
  23. } else {
  24. lp.addRule(RelativeLayout.BELOW,imageId-1);
  25. }
  26. menuImage.setLayoutParams(lp);
  27. ImageView arrow = new ImageView(this);
  28. arrow.setImageResource(R.drawable.arrow_menu);
  29. arrow.setPadding(0,15,0);
  30. RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT );
  31. params.addRule(RelativeLayout.ALIGN_RIGHT,menuImage.getId());
  32. params.addRule(RelativeLayout.CENTER_VERTICAL);
  33. arrow.setLayoutParams(params);
  34. container.addView(menuImage);
  35. container.addView(arrow);
  36. imageId++;
  37. }
  38. }
最佳答案
我认为下面这行是你的问题

  1. params.addRule(RelativeLayout.CENTER_VERTICAL);

是的,您最有可能添加多个箭头,它们只是一个在彼此之上,所有这些都与完整相对布局的垂直中心对齐.该命令不会对您的按钮项执行垂直居中,而是对父亲RelativeLayout执行.

猜你在找的Android相关文章