![](/img/trans.png)
[英]How to set bigger text into textview with width wrap_content?
[英]In Android how to get the width of the Textview which is set to Wrap_Content
我正在尝试向textview添加一个文本,我已将其宽度设置为Wrap_content。 我试图获得此textview的宽度。 但它在所有情况下都显示为0。 在将文本设置到文本视图后,如何获得textview的宽度。
代码如下:
LinearLayout ll= new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
TextView tv = new TextView(this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
ll.addView(tv);
tv.setText("Hello 1234567890-0987654321qwertyuio787888888888888888888888888888888888888888888888888");
System.out.println("The width is == "+tv.getWidth());// result is 0
this.setContentView(ll);
请建议。 提前致谢。
只有在布局过程完成后,动态宽度/高度的视图才能获得正确的大小( http://developer.android.com/reference/android/view/View.html#Layout )。
您可以将OnLayoutChangeListener添加到TextView并在那里获得它的大小:
tv.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
public void onLayoutChange(View v, int left, int top, int right, int bottom,
int oldLeft, int oldTop, int oldRight, int oldBottom) {
final int width = right - left;
System.out.println("The width is == " + width);
});
在完全构建布局之前,无法获得具有动态大小的View的宽度。 这意味着你无法在onCreate()中获得它。 一种方法是创建一个继承自TextView并覆盖onSizeChanged()
。
这对我有用:
RelativeLayout.LayoutParams mTextViewLayoutParams = (RelativeLayout.LayoutParams) mTextView.getLayoutParams();
mTextView.setText(R.string.text);
mTextView.measure(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
int width = mShareTip.getMeasuredWidth();
//use the width to do what you want
mShareTip.setLayoutParams(mShareTipLayoutParams);
你可以试试这个:
textView.measure(0,0);
int width = textView.getMeasuredWidth();
你好用这个方法:
textview.post(new Runnable() {
@Override
public void run() {
int width = textview.getWidth();
int height = textview.getHeight();
textview.setText( String.valueOf( width +","+ height ));
}
});
在完全绘制视图后,您可以使用此库将宽度执行计算的任务计划到正确的时间
https://github.com/Mohamed-Fadel/MainThreadScheduler
使用样品:
MainThreadScheduler.scheduleWhenIdle(new Runnable() {
@Override
public void run() {
int width = textview.getWidth();
int height = textview.getHeight();
textview.setText( String.valueOf( width +","+ height ));
}
});
你应该用这个:
textView.getMeasuredWidth();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.