0
  1. 这是代码。

    RelativeLayout layout = new RelativeLayout(this);
    TextView title = new TextView(this);
    title.setGravity(Gravity.CENTER);
    title.setWidth(320);
    title.setHeight(160)
    title.setText("hello");
    layout.addView(title);
    layout.setOnTouchListener(this);
    
  2. 在屏幕上,当我将视图位置从 (x:0, y:0) -> 移动到 (x: 200, y:300)

  3. 然后设置TextView的值

    title.setText("aaaaabbbbbbccccccdddddddeeeeeeeddddd");
    

    字符串长度 > textview 的宽度,所以多行显示

  4. 然后发生的错误是“TextView的位置回到(x:0,y:0)”

    如果 TextView 是显示 SingleLine,例如:title.setText("aaa"); TextView 的位置是 (x:200, y:300)

是android textView显示多行字符串,布局是Redrawn吗?任何人都可以帮助我吗?我担心了一晚上!!!

ps: 调用 TextView.bringToFront(); 时也会出现同样的错误。

// 在Android中,如果改变了视图位置,必须设置layoutparams;否则,当视图重绘时,视图会回到location(0,0)。</p>

// 解决方法是这样的:</p>

                RelativeLayout.LayoutParams lpFeedback = new RelativeLayout.LayoutParams(  
                        RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);  
                lpFeedback.leftMargin = v.getLeft();  
                lpFeedback.topMargin = v.getTop();  
                lpFeedback.setMargins(v.getLeft(), v.getTop(), 0, 0);  
                v.setLayoutParams(lpFeedback);
4

1 回答 1

0

不,它不会像那样发生,这里有一个示例代码试试这个:

RelativeLayout layout = new RelativeLayout(this);
        RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
        );
        TextView title = new TextView(this);
        RelativeLayout.LayoutParams tvlp = new RelativeLayout.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT
        );
        tvlp.setMargins(200,300,0,0);
        title.setLayoutParams(tvlp);

        title.setGravity(Gravity.CENTER);
        title.setTextColor(Color.WHITE);
        title.setBackgroundColor(Color.GREEN);
        title.setWidth(320);
        title.setHeight(160);
        title.setText("helloaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
        title.setTextSize(22);
        layout.addView(title);
        setContentView(layout, rlp);

希望能帮助到你!!!

于 2017-06-06T17:10:43.523 回答