Мне нужно нарисовать WebView с холстом. Я ищу ответ на два дня, но не могу найти ничего, что мне нужно.Android: нарисуйте WebView с холстом
На данный момент я могу показать WebView как этот
WebView wv = new WebView(this);
String htmlContent = foo_getHtmlContent();
wv.loadData(htmlContent, "text/html", "UTF-8");
setContentView(wv);
, который работает довольно хорошо, но начинается представление в пос 0,0. Кроме того, я в состоянии сделать вид (раздутый из XML) с Canvas, как этот
LayoutInflater li = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = li.inflate(R.layout.layout_test, null);
v.measure(MeasureSpec.getSize(v.getMeasuredWidth()), MeasureSpec.getSize(v.getMeasuredHeight()));
v.layout(400, 400, 400, 400);
canvas.translate(100, 100);
v.draw(canvas);
, который именно так, как я хочу сделать, но с неправильным видом. Я не могу найти способ объединить эти два способа, чтобы нарисовать вид из первого кода на втором коду (или любым другим способом)
Кто-нибудь знает, как нарисовать WebView с холстом?
EDIT:
Никто не имеет понятия?
Теперь я пробовал это, но я получаю исключение NullPointerException из-за недостающих атрибутов.
LayoutInflater li =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
WebView wv = null;
try
{
wv = (WebView) li.createView("WebView", "android.webkit.", null);
wv.loadData(htmlContent, "text/html", "UTF-8");
wv.measure(MeasureSpec.getSize(wv.getMeasuredWidth()),MeasureSpec.getSize(wv.getMeasuredHeight()));
wv.layout(100, 100, 400, 400);
canvas.translate(100, 100);
wv.draw(canvas);
}catch (InflateException e)
{
Log.e("Meassure", "InflateException: " + e);
} catch (ClassNotFoundException e)
{
Log.e("Meassure", "ClassNotFoundException: " + e);
}
Кто-нибудь знает, как создать атрибуты фитинга?
EDIT2:
Me again.
Я пробовал что-то еще и нашел способ, который работает с TextView, но не с веб-представлением. Это
LayoutInflater li = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = li.inflate(R.layout.layout_test, null);
TextView textView = (TextView) v.findViewById(R.id.textView1);
textView.setText("Hello World");
v.measure(MeasureSpec.getSize(v.getMeasuredWidth()), MeasureSpec.getSize(v.getMeasuredHeight()));
v.layout(400, 400, 400, 400);
canvas.translate(100, 100);
v.draw(canvas);
работает довольно хорошо, и делает все TextView должен делать, но это
View v = li.inflate(R.layout.web_layout, null);
WebView wv = (WebView) v.findViewById(R.id.webView);
wv.loadData(htmlContent, "text/html", "UTF-8");
v.measure(MeasureSpec.getSize(v.getMeasuredWidth()), MeasureSpec.getSize(v.getMeasuredHeight()));
v.layout(400, 400, 400, 400);
canvas.translate(100, 100);
v.draw(canvas);//if i substitute this line by setContentView(v); it works but without positioning
абсолютно ничего не делает (кроме метания забавного материала для LogCat).
LogCat-вывода является следующее (повторяющимися каждые 10 мс):
06-17 14:04:06.210: D/webview(19424): [InitTabEffectPivot] >> nScreenWidth = 720
06-17 14:04:06.210: D/webview(19424): [InitTabEffectPivot] >> nScreenHeight = 1280
06-17 14:04:06.220: D/skia(19424): notifyPluginsOnFrameLoad not postponed
Я также пытался позвонить Thread.sleep (10) после строки wv.loadData, потому что я где-то читал, что через WebView потребности некоторое время для загрузки его содержимого, но это тоже не работает. По крайней мере, кто-нибудь знает, что означает logcat-output?
Вы все еще ищете решение? Я позиционировал представление внутри WebView и раздул макет с компонентом. Если вам интересно, я могу опубликовать код. – Gibberish
Да, пожалуйста. Мне все еще интересно найти решение. – viper1209
Я ищу способ преобразования координат javascript в координаты android, там должна быть формула для этого. Как только у меня появится, я обновлю. https: // GitHub.com/GitHK/DivToView – Gibberish