有没有办法根据另一个textview的位置将省略号添加到textview?

时间:2016-08-30 02:09:11

标签: android android-layout textview

我有一个RelativeLayout,其中有两个TextViews,它是以编程方式从随机数据创建的。一个在一条线上左对齐,另一条在同一条线上右对齐。当TV1中的数据太长并到达TV2的左边缘时,它们当前彼此重叠。我希望它们之间存在差距,TV1被截断并且......添加到TV1的末尾。

我知道我可以将setEllipsize等添加到TV1 ......但是根据我的经验,它在PARENT结束时有效,而不是其他TextViews

设置物理字符数是一个选项,因为手动截断/添加省略号是另一种选择但是我必须注意使用的不同大小的显示宽度等。另外,它都是基于TV2的“宽”程度显示时最终也是如此。

有没有办法以编程方式执行此操作,因此TextViews不会相互竞争?

以下是我目前对他们的看法......“RL”是我的RelativeLayout

TV1有......

        TextView tv1 = new TextView(this);
        RelativeLayout.LayoutParams tvp1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        tvp1.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
        tv1.setId(R.id.tv1);
        tv1.setPadding(5, 5, 5, 5);
        tv1.setTextSize(20);
        tv1.setText(myTV1Data);
        rl.addView(tv1, tvp1);
TV2有......

        TextView tv2 = new TextView(this);
        RelativeLayout.LayoutParams tvp2 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        tvp2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        tv2.setId(R.id.tv2);
        tv2.setPadding(5, 5, 5, 5);
        tv2.setText(myTV2Data);
        tv2.setTextSize(20);
        rl.addView(tv2, tvp2);

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在2个TextView之间添加规则。
这是代码:

    TextView tv2 = new TextView(this);
    RelativeLayout.LayoutParams tvp2 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    tvp2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    tv2.setId(R.id.tv2);
    tv2.setPadding(5, 5, 5, 5);
    tv2.setText(myTV2Data);
    tv2.setTextSize(20);
    rl.addView(tv2, tvp2);

    TextView tv1 = new TextView(this);
    RelativeLayout.LayoutParams tvp1 = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    tvp1.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
    tvp1.addRule(RelativeLayout.LEFT_OF, tv2.getId());
    tv1.setId(R.id.tv1);
    tv1.setPadding(5, 5, 5, 5);
    tv1.setTextSize(20);
    tv1.setText(myTV1Data);
    rl.addView(tv1, tvp1);