Android Textview绘制多行字符串时,布局重绘?

When Android Textview Draw Multi-Line strings, The Layout Redrawn?

  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");
    

    the string length > textview's width, so multi-line display

  4. 然后发生的错误是"the TextView's location is back to (x:0, y:0)"

    if the TextView is display SingleLine, eg: title.setText("aaa"); the TextView's location is (x:200, y:300)

难道androidtextView显示多行字符串,布局重绘?任何人都可以帮助我吗?我担心了一晚上!!!

ps: 调用TextView.bringToFront();

也出现同样的错误

// 在Android中,如果改变view的位置,必须设置layoutparams;否则,view重绘时,view会回到location(0,0)。

// 解法是这样的:

                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);

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

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);

希望对您有所帮助!!!