如何以编程方式调整一个Android的TextView到另一个TextView的权 [英] How to programmatically align an Android TextView to the right of another TextView

查看:75
本文介绍了如何以编程方式调整一个Android的TextView到另一个TextView的权的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在低于code我已经创建了两个文本视图,并将它们添加到编程相对布局。我想通过边对齐它们身边。

在code运行良好,但没有把新的TextView 至$的右p $ pvious 的TextView ,而不是新的的TextView 被定位在边缘(0,0,0,0)即右上角屏幕的角落:

  super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);
    RelativeLayout的=(RelativeLayout的)findViewById(R.id.relative_Layout);

    TextView的[0] =新的TextView(本); //创建第一的TextView
    TextView的[0] .setId(0);
    TextView的[0] .setText(1);
    TextView的[0] .setBackgroundResource(R.drawable.shape); //解析从shape.xml图像

    relativeLayoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
    TextView的[0] .setLayoutParams(relativeLayoutParams);

    relativeLayout.addView(TextView的[0]); //创建另一个的TextView

    TextView的[1] =新的TextView(本);

    TextView的[1] .setBackgroundResource(R.drawable.shape);

    RelativeLayout.LayoutParams relativeLayoutParams =
            新RelativeLayout.LayoutParams((RelativeLayout.LayoutParams.WRAP_CONTENT),(RelativeLayout.LayoutParams.WRAP_CONTENT));//create PARAMS新的TextView

    relativeLayoutParams.addRule(RelativeLayout.RIGHT_OF,TextView的[0] .getId()); //对齐由侧TextView的侧
    TextView的[1] .setText(2);

    relativeLayout.addView(TextView的[1],relativeLayoutParams);
 

解决方案

请尝试以下操作:

  1. 设置的TextView的id [0]设置为1而不是0(ID需要是一个正整数)
  2. 加入的TextView的relativeLayoutParams [1] RelativeLayout.ALIGN_TOP规则

下面为我工作:

  RelativeLayout的RelativeLayout的=(RelativeLayout的)findViewById(R.id.test);
RelativeLayout.LayoutParams relativeLayoutParams;
TextView的[]的TextView =新的TextView [2];

// 1日的TextView
TextView的[0] =新的TextView(本);

relativeLayoutParams =新RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT,
        RelativeLayout.LayoutParams.WRAP_CONTENT);

TextView的[0] .setId(1); //从0改为1号
TextView的[0] .setText(1);

relativeLayoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);

relativeLayout.addView(TextView的[0],relativeLayoutParams);

//第二的TextView
TextView的[1] =新的TextView(本);

relativeLayoutParams =新RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT,
        RelativeLayout.LayoutParams.WRAP_CONTENT);

TextView的[1] .setText(2);

relativeLayoutParams.addRule(RelativeLayout.RIGHT_OF,
        TextView的[0] .getId());
relativeLayoutParams.addRule(RelativeLayout.ALIGN_TOP,
        TextView的[0] .getId()); //添加顶部对齐规则

relativeLayout.addView(TextView的[1],relativeLayoutParams);
 

In the below code I have created two text views and added them programmatically to a relative layout. I want to align them side by side.

The code runs fine but is not placing the new TextView to the right of previous TextView instead the new TextView is positioned at margin (0,0,0,0) i.e. upper right corner of the screen:

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    relativeLayout= (RelativeLayout) findViewById(R.id.relative_Layout);

    textView[0] = new TextView(this);//creates first textview
    textView[0].setId(0);
    textView[0].setText("1");
    textView[0].setBackgroundResource(R.drawable.shape);//parses an image from shape.xml

    relativeLayoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
    textView[0].setLayoutParams(relativeLayoutParams);

    relativeLayout.addView(textView[0]);//creates another textview

    textView[1] = new TextView(this);

    textView[1].setBackgroundResource(R.drawable.shape);

    RelativeLayout.LayoutParams relativeLayoutParams=
            new RelativeLayout.LayoutParams((RelativeLayout.LayoutParams.WRAP_CONTENT),(RelativeLayout.LayoutParams.WRAP_CONTENT));//create params for new textview

    relativeLayoutParams.addRule(RelativeLayout.RIGHT_OF, textView[0].getId());//to align the textview side by side
    textView[1].setText("2");

    relativeLayout.addView(textView[1], relativeLayoutParams);

解决方案

Try the following:

  1. Set the id of textView[0] to 1 instead of 0 (id needs to be a positive integer)
  2. Add to the relativeLayoutParams of textView[1] a rule for RelativeLayout.ALIGN_TOP

The following worked for me:

RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.test);
RelativeLayout.LayoutParams relativeLayoutParams;       
TextView[] textView = new TextView[2];

// 1st TextView
textView[0] = new TextView(this);

relativeLayoutParams = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT,
        RelativeLayout.LayoutParams.WRAP_CONTENT);

textView[0].setId(1); // changed id from 0 to 1
textView[0].setText("1");   

relativeLayoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);

relativeLayout.addView(textView[0], relativeLayoutParams);

// 2nd TextView
textView[1] = new TextView(this);

relativeLayoutParams = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT,
        RelativeLayout.LayoutParams.WRAP_CONTENT);      

textView[1].setText("2");

relativeLayoutParams.addRule(RelativeLayout.RIGHT_OF,
        textView[0].getId());
relativeLayoutParams.addRule(RelativeLayout.ALIGN_TOP,
        textView[0].getId()); // added top alignment rule

relativeLayout.addView(textView[1], relativeLayoutParams);

这篇关于如何以编程方式调整一个Android的TextView到另一个TextView的权的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆