我有一个文字WebView
,我试图重新调整每次用户下一个文字的内容。想法是将WebView
放入屏幕而不用它被切断而没有显示滚动条。
目前我唯一可靠的方法是扩展WebView
类并使用测量滚动条距离的基类protected
方法:
public class ExtendedWebView extends WebView {
public ExtendedWebView(Context context) {
super(context);
}
public ExtendedWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public int getHorRange() {
return computeHorizontalScrollRange();
}
public int getVerRange() {
return computeVerticalScrollRange();
}
public int getScreenX() {
return computeHorizontalScrollExtent();
}
public int getScreenY() {
return computeVerticalScrollExtent();
}
}
我发现的唯一限制是如果内容较小并且没有超出范围,则无法知道它有多小,因为它将返回{{1 }}
在另一个线程下,我有一个不断循环的方法,检查WebView
是否超出范围,然后重新调整大小。这是关联的代码,简化:
WebView
ExtendedWebView webView; // assume this is initialized
while (true) {
int a, b, c, d;
a = webView.getHorRange();
b = webView.getScreenX();
c = webView.getVerRange();
d = webView.getScreenY();
if (a > b || c > d) {
//shrinking to accommodate text...
int val, x, y;
x = a - b;
y = c - d;
val = x > y ? x : y;
val*=0.1;
val = val == 0 ? 1 : val;
scale-=val;
}
else{
//TODO enlarging webView
}
if (scale <= 50) {
scale = 50;
//prevent from webView being too small
}
if (scale > 200)
scale = 200;
webView.setInitialScale(scale);
}
的缩小工作,我无法弄清楚如何在文本被删除后再次放大。每当我尝试简单地从WebView
块增加比例时,它只是在放大和缩小文本之间交替,并且在没有滚动条的情况下不知道内容大小的限制阻碍了我做出更好的解决方案。
澄清一点,不是我试图重新调整大小的else
,而是它的内容。