Android: отображать данные html

Я хочу отобразить содержимое html-страницы и изображение справа от нее, на мой взгляд.

Итак, я определил свой макет как

<ScrollView android:id="@+id/scrllvwNo1"
    android:layout_width="fill_parent" android:layout_height="wrap_content">
    <RelativeLayout android:layout_width="wrap_content"
        android:layout_height="fill_parent" android:background="@drawable/home_bg">
        <ImageView android:id="@+id/aboutcmkimage"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_alignParentRight="true" android:src="@drawable/about"
            android:padding="5dip" />
        <WebView android:id="@+id/aboutcmk" android:layout_width="wrap_content"
            android:layout_height="fill_parent" android:textColor="#000000"
            android:layout_toLeftOf="@+id/aboutcmkimage"
            android:layout_alignParentTop="true" android:layout_alignParentLeft="true" />

    </RelativeLayout>

</ScrollView>

и

Я пытаюсь загрузить html-страницу, как показано ниже.

WebView web = (WebView)findViewById(R.id.aboutcmk);
         web.loadData(getString(R.layout.about),"texl/html","utf-8");

в этом случае я получаю сообщение об ошибке "эта страница содержит ошибку в строке 1..."

если я попытаюсь

web.loadDataWithBaseURL(null,getString(R.layout.about),"texl/html","utf-8",null); 

нет html-вывода и нет ошибок

В обоих случаях изображение приходит

Может ли кто-нибудь помочь мне в отладке

В моем html есть маркеры, поэтому я не могу использовать текстовое представление вместо веб-просмотра.

вот определение моей htmlstring в xml файле

<string name="About"><html><body><b>What is CMK?</b> ......</body></html> 

Большое спасибо за помощь


person png    schedule 06.12.2011    source источник
comment
Я вижу, у вас есть <string name="About"> в спецификации HTML. Не могли бы вы уточнить, что это такое? Насколько я знаю, HTML не имеет такого тега.   -  person Arnab Chakraborty    schedule 06.12.2011
comment
это мое определение в файле xml. я сохранил строку html в строковой переменной About   -  person png    schedule 06.12.2011


Ответы (3)


Вы помещаете эту строку Что такое CMK? ...... в strings.xml, если да, то исправление находится в этой строке web.loadDataWithBaseURL(null,getString(R.layout.about), "texl/html", "utf-8", null);

Correct one:

web.loadDataWithBaseURL(null, getString(R.string.About), "text/html", "UTF-8", null);
person kalpana c    schedule 06.12.2011
comment
это была большая ошибка. большое спасибо. При этом я получаю отображаемый html, но 1. теги не декодируются должным образом (не отображаются полужирным шрифтом, маркерами и т. д. любые указатели на это были бы очень полезны) - person png; 06.12.2011

Прежде всего, если вы сохранили спецификацию HTML в виде строкового ресурса, вы должны получить к нему доступ как R.string.about, а не R.layout.about. Измените это, если это все еще не работает, попробуйте экранировать меньше символов в вашей строке, например:

<string name="about">&lt;html>&lt;body>&lt;b>What is CMK?&lt;/b> ......&lt;/body>&lt;/html> </string>

Я думаю, вам придется избегать меньше символов. Перед загрузкой текста зарегистрируйте его. Вы увидите проблему.

person Arnab Chakraborty    schedule 06.12.2011
comment
да, ‹ нужно было экранировать. Большое спасибо К сожалению, я могу отметить только один ответ как правильный. Этот тоже абсолютно правильный. Спасибо еще раз - person png; 06.12.2011
comment
Без проблем. Если вам понравился мой ответ, просто проголосуйте за него. Кстати, вы можете изменить свой выбор правильного ответа, если хотите (но не обязательно). - person Arnab Chakraborty; 06.12.2011

Вместо того, чтобы хранить HTML в strings.xml, вы можете сохранить его в отдельном файле в каталоге res/raw/. Например, допустим, вы сохранили файл в res/raw/mypage.html. Я не проверял это, но вы должны иметь возможность открывать необработанные ресурсы и загружать их в WebView, например:

try {
    Resources resources = getResources();
    InputStream inputStream = resources.openRawResource(R.raw.mypage);
    byte[] bytes = new byte[inputStream.available()];
    inputStream.read(bytes);

    String htmlStr = new String(bytes);
    webView.loadData(htmlStr, "text/html", "UTF-8");
} catch(Exception e) {
    //blah
}
person Chris Fei    schedule 06.12.2011