Динамическое построение Лэйаута
Динамическое построение Лэйаута
Здравствуйте. В приложении парсится некоторая страница. Предположим, какой-то пост из блога. Он может идти сплошным текстом, а иногда в нем встречаются картинки.
Вопрос #1: как сделать вывод WebView без горизонтальной прокрутки (чтоб всё отображалось в пределах одного экрана)?
Вопрос #2: WebView я не хочу делать. Так некрасиво. Предположим, я могу в тексте найти изображения, как сделать так, чтобы при загрузке динамически создавались TextView с текстом ДО изображения, ImageView с самим изображением, затем TextView с текстом ПОСЛЕ изображения?
Надеюсь, идея понятна.
Вот, как это должно выглядеть
Вопрос #1: как сделать вывод WebView без горизонтальной прокрутки (чтоб всё отображалось в пределах одного экрана)?
Вопрос #2: WebView я не хочу делать. Так некрасиво. Предположим, я могу в тексте найти изображения, как сделать так, чтобы при загрузке динамически создавались TextView с текстом ДО изображения, ImageView с самим изображением, затем TextView с текстом ПОСЛЕ изображения?
Надеюсь, идея понятна.
Вот, как это должно выглядеть
Re: Динамическое построение Лэйаута
Берешь LinearLayout,Вопрос #2: WebView я не хочу делать. Так некрасиво. Предположим, я могу в тексте найти изображения, как сделать так, чтобы при загрузке динамически создавались TextView с текстом ДО изображения, ImageView с самим изображением, затем TextView с текстом ПОСЛЕ изображения?
создаешь TextView, делаешь ему что-то типа setText(HTML.fromHTML(text)), добавляешь на LinearLayout,
потом создаешь ImageView, запихиваешь туда картинку, добавляешь, итд.
Глянь тут тут может понадобится.
по поводу вопрос №1:
http://stackoverflow.com/questions/1106 ... id-webview
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
Re: Динамическое построение Лэйаута
Вчера видел этот пример. Вылетает с ошибкой NullPointerException в этой строкеanber писал(а): Глянут тут может понадобится.
Код: Выделить всё
urlDrawable.setBounds(0, 0, 0 + result.getIntrinsicWidth(), 0
Re: Динамическое построение Лэйаута
Есть идеи почему оно падает?Вчера видел этот пример. Вылетает с ошибкой NullPointerException в этой строке
Наводящий вопрос - где находится картинка из примера:
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
Re: Динамическое построение Лэйаута
а) В интернетеanber писал(а): Наводящий вопрос - где находится картинка из примера:
б) Ну, на Gravatar.com
Если вы про AsyncTask, то он там есть) Но и моя кастомная строка
Код: Выделить всё
String html1 = "Hello" + "<img src=\"https://pp.vk.me/c10716/u121500512/-6/x_7e78b984.jpg\">" + "Test!";
Если я неправильно Вас понял - поправьте, пожалуйста. Я быдлокодер и многого могу не понимать.
Re: Динамическое построение Лэйаута
а) у меня все работает
б) <uses-permission android:name="android.permission.INTERNET" />
б) <uses-permission android:name="android.permission.INTERNET" />
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
Re: Динамическое построение Лэйаута
Ох...да, тупанул
Спасибо!
Спасибо!
Re: Динамическое построение Лэйаута
Если надо изображения побольше -
Если есть проблема с размером изображений - http://stackoverflow.com/questions/7870 ... 4#10208504String html = "Hello " +
"<img src='http://www.gravatar.com/avatar/" +
"f9dd8b16d54f483f22c0b7a7e3d840f9?s=1024&d=identicon&r=PG'/>" +
" This is a test " +
"<img src='http://www.gravatar.com/avatar/a9317e7f ... ticon&r=PG'/>";
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
Re: Динамическое построение Лэйаута
Да, вспомнил, есть еще чудная библотека для обтекания текстом картинок - https://code.google.com/p/android-flowtextview/
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
Re: Динамическое построение Лэйаута
anber писал(а):Если надо изображения побольше -
Если есть проблема с размером изображений - http://stackoverflow.com/questions/7870 ... 4#10208504
Че-то не работает. Эклипс требует поменять SetHeight на SetMinimumHeight, при этом ничего не меняется =(
А насчет библиотеки - судя по тому, что я прочитал, она просто будет окаймлять уже готовые ImageView, а не вставлять картинки в один TextView...
Re: Динамическое построение Лэйаута
там в начале поста написано "You could change your cointainer c (view) to a textView"
да, но в 1 посте так и планировалось, с той разнице что ImageView будут между несколькими textViewА насчет библиотеки - судя по тому, что я прочитал, она просто будет окаймлять уже готовые ImageView, а не вставлять картинки в один TextView...
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
Re: Динамическое построение Лэйаута
Поменял. В логах ширина и высота выводятся по размеру экрана, а на дисплее - маленький квадрат х_х
Re: Динамическое построение Лэйаута
Держи пример во вложении. Пробую коннектиться к http://anber.dp.ua/files/test.html (за доступность сайта не ручаюсь )
- Вложения
-
- ExtractHtmlImages.zip
- (41.96 КБ) 245 скачиваний
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
Re: Динамическое построение Лэйаута
Эм...ну, вот как на Galaxy S4 отображается. Правда, тут экран 1080х1920, может, проблема в этом?
- Вложения
-
- Screenshot_2014-01-21-22-44-10.png (1.11 МБ) 9803 просмотра
Re: Динамическое построение Лэйаута
Ты хочешь чтобы картинки были выровнены по центру и текст был только между картинками?
Тогда добавь в исходный html тег <br/> до и после картинок.
Или в чем проблема?
Тогда добавь в исходный html тег <br/> до и после картинок.
Или в чем проблема?
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
Re: Динамическое построение Лэйаута
С < br > проблемы нет, это я исправлю. А как можно сделать, чтоб изображение вытягивалось пропорционально какой-то части экрана?
А то на Galaxy S2 изображение получается в половину ширины дисплея, а на S4 - меньше, чем на четверть. При этом высота вообще какая-то сверхмелкая, узкая полоса выходит.
А то на Galaxy S2 изображение получается в половину ширины дисплея, а на S4 - меньше, чем на четверть. При этом высота вообще какая-то сверхмелкая, узкая полоса выходит.
Re: Динамическое построение Лэйаута
Ну если закрыть глаза и писать левой ногой, то это можно сделать так, заменить метод fetchDrawable() в классе URLImageParser на такой:
(скалит дроваблу по ширине TextView)
P.S. это первая попавшаяся под руку реализация так что сильно не пинать
(скалит дроваблу по ширине TextView)
Код: Выделить всё
public Drawable fetchDrawable(String urlString) {
try {
InputStream is = fetch(urlString);
Drawable drawable = Drawable.createFromStream(is, "src");
if (drawable == null) {
return null;
}
if (drawable instanceof BitmapDrawable) {
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
final int maxSize = container.getWidth();
int outWidth;
int outHeight;
int inWidth = bitmap.getWidth();
int inHeight = bitmap.getHeight();
if(inWidth > inHeight){
outWidth = maxSize;
outHeight = (inHeight * maxSize) / inWidth;
} else {
outHeight = maxSize;
outWidth = (inWidth * maxSize) / inHeight;
}
Bitmap resizedBitmap = Bitmap.createScaledBitmap(bitmap, outWidth, outHeight, false);
drawable = new BitmapDrawable(c.getResources(), resizedBitmap);
}
drawable.setBounds(0, 0, 0 + drawable.getIntrinsicWidth(), 0 + drawable.getIntrinsicHeight());
return drawable;
} catch (Exception e) {
return null;
}
}
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
Re: Динамическое построение Лэйаута
Спасибо огромное!
И, пожалуй, последняя проблема, которая меня мучает: если картинка не помещается во весь экран (по ширине умещается, а по высоте уже нет), то она просто обрезается и ScrollView на это не реагирует. Пробовал поставить после всего текста точку, чтоб ScrollView до неё скроллил - не работает.
И, пожалуй, последняя проблема, которая меня мучает: если картинка не помещается во весь экран (по ширине умещается, а по высоте уже нет), то она просто обрезается и ScrollView на это не реагирует. Пробовал поставить после всего текста точку, чтоб ScrollView до неё скроллил - не работает.
Re: Динамическое построение Лэйаута
пример такой HTML можешь привести?
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.
Re: Динамическое построение Лэйаута
Код: Выделить всё
<p><img src="https://dl.dropboxusercontent.com/u/46812822/Yandex-Disk-besplatniy-servis-dlya-khraneniya-vashikh-faylov-066.jpg" alt=""/></p> .
Вот 2 скриншота - 1) http://yadi.sk/d/Cv1WKA2pGXbxe 2) http://yadi.sk/d/NkpLjid4GXc2b
Видно, что нижняя часть (зеленая трава) в альбомной ориентации уже не вмещается, однако скролл не действует.