Android Textview绘制多行字符串时,布局重绘?
When Android Textview Draw Multi-Line strings, The Layout Redrawn?
这是代码。
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);
在屏幕上,当我将视图位置从 (x:0, y:0) -> 移动到 (x: 200, y:300)
然后设置TextView的值
title.setText("aaaaabbbbbbccccccdddddddeeeeeeeddddd");
the string length > textview's width, so multi-line display
然后发生的错误是"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);
希望对您有所帮助!!!
这是代码。
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);
在屏幕上,当我将视图位置从 (x:0, y:0) -> 移动到 (x: 200, y:300)
然后设置TextView的值
title.setText("aaaaabbbbbbccccccdddddddeeeeeeeddddd");
the string length > textview's width, so multi-line display
然后发生的错误是"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);
希望对您有所帮助!!!