我希望看到textview的高度和textview的填充之和。 我用方法设置填充:
textView.setPadding(0,x,0,x);
但如果我使用
textView.getHeight();
我会收到0。
如果我使用
ViewGroup.LayoutParams params = (ViewGroup.LayoutParams) textView.getLayoutParams();
Log.d(TAG,params.height+"");
我会收到-2,这是不可能的。
我该怎么办?
编辑:这是XML代码
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/try"
android:textColor="#fff"
android:id="@+id/tv"
android:gravity="center_horizontal" />
Edit2:我使用此代码设置文本视图的宽度,它可以正常工作。
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
final int width = size.x;
final int height = size.y;
ViewGroup.LayoutParams params = (ViewGroup.LayoutParams) textView.getLayoutParams();
params.width = width/2;
我不想以编程方式设置高度因为我设置了填充。但我想得到这个措施
EDIT3:
我尝试使用
Rect bounds = new Rect();
textView.getPaint().getTextBounds(textView.getText(), 0,textView.getText().length(), bounds);
bounds.height(); //This should give you the height of the wrapped_content
正如Slartibartfast告诉我的那样。但是有一个问题:
可能这是文本大小的测量......但它不是textview高度的正确测量。我试着将这个数字和2个填充度量相加并尝试设置:
params.height = bounds.height() + 2*x;
视图小于没有这行代码的视图。
答案 0 :(得分:0)
看看:How to retrieve the dimensions of a view?
基本上只有在布局完成后才知道大小,一种方法是创建自定义文本视图并使用onSizeChanged方法
修改强>
怎么样
Rect bounds = new Rect();
textView.getPaint().getTextBounds(textView.getText(), 0,textView.getText().length(), bounds);
bounds.height(); //This should give you the height of the wrapped_content