为了获得相同的外观TextView
和WebView
内容,我遇到了 Android 4 的强大阻力。
正如Display
getWidth()
已弃用的那样,我已经尝试了 Android 4 的硬编码值,但结果是相同的:在webView
文本变大并且在textView
减小字体大小的同时出现滚动。
相同显示类型的这种行为对我来说没有任何意义,任何人都可以告诉我是否记录在任何地方吗?
解决方案:pt
WebView 似乎忽略了,我不得不尽可能地
使用px
缩放sp
:
((TextView)findViewById(R.id.textView1)).setTextSize(TypedValue.COMPLEX_UNIT_SP,24);
font-size: " + pixelsToSp(this, 24.0f) + "px;
private float scaledPX(Context context, Float px) {
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, px, getResources().getDisplayMetrics());
}
安卓 2.3 WVGA
安卓 4.1 WVGA
布局
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="same text"/>
<WebView
android:id="@+id/webView1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
代码
((WebView)findViewById(R.id.webView1)).getSettings().setLoadWithOverviewMode(true);
((WebView)findViewById(R.id.webView1)).getSettings().setUseWideViewPort(true);
((WebView)findViewById(R.id.webView1)).getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); // this line was missed when the screenshots was made, it makes the images being scaled correctly
((TextView)findViewById(R.id.textView1)).setTextSize(TypedValue.COMPLEX_UNIT_PX,24);
final String width = Integer.toString(getWindowManager().getDefaultDisplay().getWidth());
final String html = "<html style = 'margin: 0px; padding: 0px;'>"
+ "<head>"
+ "<meta name='viewport' content='width=device-width; user-scalable=no; initial-scale=1.0; minimum-scale=1.0; maximum-scale=1.0; target-densityDpi=device-dpi;'/>"
+ "</head>"
+ "<body style = '"
+ "width: "
+ width
+ "px;"
+ ";'>"
+ "<div style='overflow: hidden; width: 100%; font-size: " + 24 + "px;'>"
+ "same text size"
+ "<img style='max-width: " + width + "px;' src=\"http://upload.wikimedia.org/wikipedia/commons/c/ca/Niobe050905-Siamese_Cat.jpeg\"/>"
+ "</div>"
+ "</body>";
((WebView)findViewById(R.id.webView1)).loadDataWithBaseURL("", html, "text/html", "UTF-8", "");