【问题标题】:Issue with programmatical alignment inside Relative layout in AndroidAndroid中相对布局内的编程对齐问题
【发布时间】:2013-08-14 18:36:26
【问题描述】:

我正在尝试以编程方式添加 RelativeLayout。布局水平包含一个 imageview 和一个 textview。现在两者都重叠了。如何以编程方式使用 LayoutParams 正确设置对齐方式?

        RelativeLayout rl  = new RelativeLayout(this);
        RelativeLayout.LayoutParams myparam = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.FILL_PARENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
        TextView tv = new TextView(this);
        tv.setText("test");
        tv.setTextColor(Color.WHITE);
        ImageView item = new ImageView(this);
        item.setImageResource(image);
        myparam.addRule(RelativeLayout.ALIGN_RIGHT);
        tv.setLayoutParams(myparam);
        rl.addView(item);
        rl.addView(tv);

【问题讨论】:

    标签: android android-layout android-relativelayout android-xml


    【解决方案1】:
    Check this code now..this will help
    
    RelativeLayout rl = new RelativeLayout(this); 
    RelativeLayout.LayoutParams myparam = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    
    RelativeLayout.LayoutParams newParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    
    ImageView item = new ImageView(this); 
    item.setImageResource(image); 
    item.setId(1);
    item.setLayoutParams(newParams);     
    rl.addView(item);
    
    RelativeLayout.LayoutParams lprams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    
    TextView tv = new TextView(this); tv.setText("test"); 
    tv.setTextColor(Color.WHITE); 
    tv.setLayoutParams(lprams); 
    lprams.addRule(RelativeLayout.RIGHT_OF, 1); 
    
    rl.addView(tv);
    

    【讨论】:

    • 文本在此不可见
    • 你的textview颜色是白色的,检查背景颜色,如果背景颜色是白色的,把txtview换成其他颜色。
    • 背景只有黑色。
    • 在textview部分添加这一行 lprams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    • 谢谢。它仍然重叠在图像的右边缘。我该如何克服它?
    【解决方案2】:

    您必须在各自的LayoutParams 中指定TextViewImageView 如何相关。您可以使用addRule 方法来做同样的事情。

    例如:

    item.setId(A_POSITIVE_INTEGER);
    myparam.addRule(RelativeLayout.BELOW, item.getId());
    tv.setLayoutParams(myparam);
    

    将使TextView 出现在ImageView 下方。

    【讨论】:

      【解决方案3】:

      试试这个代码

      RelativeLayout rl = new RelativeLayout(this); RelativeLayout.LayoutParams myparam = new           RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.FILL_PARENT,   RelativeLayout.LayoutParams.WRAP_CONTENT);
      
      RelativeLayout.LayoutParams lprams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
      
      TextView tv = new TextView(this); tv.setText("test"); 
      tv.setId(1);
      tv.setTextColor(Color.WHITE); 
      tv.setLayoutParams(lprams); 
      rl.addView(tv);
      
      RelativeLayout.LayoutParams newParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
      
      ImageView item = new ImageView(this); 
      item.setImageResource(image); 
      newParams.addRule(RelativeLayout.RIGHT_OF, 1); 
      item.setLayoutParams(newParams);     
      rl.addView(item);
      

      【讨论】:

      • 嘿,它把左边的文字和图片对齐了
      • 是的,如果你想要左边的 imageview 然后使用 imageview 代码然后 textview,这样你将得到 imageview 和 textview 正确对齐..谢谢
      猜你喜欢
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      相关资源
      最近更新 更多