无法使用setWidth或setLayoutParams设置TextView宽度

时间:2015-01-22 13:23:49

标签: android

注意:根据原始问题编辑,我在展示次数bounds下的值不正确。

我试图以编程方式计算出文本的宽度,以创建一个包含我的全文的文本视图。我有以下代码,setWidth()setLayoutParams似乎都不起作用。

    TextView textView = new TextView(getActivity());
    String text = "My text";
    textView.setText(text);
    Paint paint = new Paint();
    Rect bounds = new Rect();
    paint.setTypeface(textView.getTypeface());
    paint.setTextSize(textView.getTextSize());
    paint.getTextBounds(text, 0, text.length(), bounds);
    textView.setWidth(bounds.width());
    textView.setHeight(bounds.height());

尝试使用LayoutParams,但仍然没有运气。

ViewGroup.LayoutParams params =
    newViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 75);
textView.setLayoutParams(params);

2 个答案:

答案 0 :(得分:0)

通常,当一个函数使用像素时会发生这种情况,而另一个函数使用dpi。

但为什么在地球上你需要手动测量文字?通常人们会在xml中指定wrap_content

示例:

<Button
    android:text="Press me!"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:onClick="onButton1"/>

<!--
    android:layout_width="wrap_content"
-->

PS阅读有关视图布局:http://developer.android.com/reference/android/view/View.html#Layout 并尝试使用getMeasuredWidth()和getMeasuredHeight();如果您无法确定布局是否已经发生,请使用视图树观察器 http://developer.android.com/reference/android/view/View.html#getViewTreeObserver()及其回调。

答案 1 :(得分:0)

如描述Here,我们无法获取OnCreateView()中视图的边界,因为视图尚未初始化,您可以尝试使用OnWindowFocusChanged方法。