我在Android中的ScrollView中放置了一个TextView:
<ScrollView
android:layout_width = "fill_parent"
android:layout_height = "wrap_content">
<TextView
android:layout_width = "wrap_content"
android:layout_height = "wrap_content" />
</ScrollView>
使用此配置,scrollview将增长以包装textview-content。 如何实现scrollview只占用所需的空间(少数文本),但同时将大小限制为100dp(对于长文本)?
感谢大家的答案。对于所有具有相同问题的人来说,这里是可接受的解决方案:
创建一个自定义ScrollView
类,在xml文件中使用此类而不是ScrollView。然后覆盖onMeasure()
方法:
public class ScrollMyVew extends ScrollView {
public static final int maxHeight = 100; // 100dp
// default constructors
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
heightMeasureSpec = MeasureSpec.makeMeasureSpec(dpToPx(getResources(),maxHeight), MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
private int dpToPx(Resources res, int dp) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, res.getDisplayMetrics());
}
}
答案 0 :(得分:2)
尝试这样的事情:
<ScrollView
android:id="@+id/myScrollView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:fillViewport="true"/>
<TextView
android:id="@+id/myTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxHeight="your_value_here"/>
</ScrollView>
答案 1 :(得分:0)
如果字符数超过一定数量,则动态更改TextView的大小。
例如:
TextView v = (TextView) findViewById(R.id.sometext);
LayoutParams lp = v.getLayoutParams();
lp.height = 50;
v.setLayoutParams(lp);