Простое, но странное в Android

15 дек. 2013 г. | | |

Вот и дошли руки написать приложение под Android. В процессе, конечно же, без приключений не обошлось. И так, простые, но странные вещи, с которыми мне пришлось столкнуться, разрабатывая простое приложение под Android.

 1. Как выровнять текст по ширине (justify) в Android?
Никак. Можно отцентрировать, выровнять текст по правому краю или по левому. Народ предлагает использовать WebView, и там уже с помощью css-стилей задавать выравнивание. Получается такое уже громоздкое решение:
Код
 
WebView view = findViewById(R.id.web_view);
view.loadData(getString(R.string.hello), "text/html", "utf-8");


Ресурсы
 
<string name="hello">
<![CDATA[
<html>
<head></head>
<body style="text-align:justify;color:gray;background-color:black;">
Я строка, я ничего не хочу делать. Я хочу быть выровненой по ширине.
</body>
</html>
]]>
</string>


Есть уже готовые решения (например, это), чтобы не писать всё ручками.
Но, если вам нужно использовать нестандартный шрифт, то этот вариант принесёт много дополнительных проблем: текст сразу лучше сохранять в виде html-страницы, в стилях которой задавать нужный шрифт (ага, и шрифт лучше бы лежал бы в той же папке, где и страница) и остальное позиционирование. Много телодвижений. Очень.
Есть ещё вариант выравнять текст без использования WebView (к сожалению, ссылка где-то потерялась), но сразу минусы: нужно ручками подбирать подходящий коэффициент для правильного выравнивания (ага, разные экраны у разных устройств) и , как бонус, жуткие тормоза.
В Winforms, кстати, такая же проблема с выравниванием текста, так что это только кажется странным после веба, где всё легко делается с помощью стилей.
2. Где можно задать метод наложения фона у layout?
Нигде. По умолчанию фон растягивается. Можно использовать такой хак: делаем лэйаут с фоном, а потом используем этот лэйаут как фон, его можно повторять.

repeat.xml
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/bg"
android:tileMode="repeat" />
 
someactivity.xml
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layoutMode="opticalBounds"
android:background="@layout/repeat"
></TableLayout>


3. Мой текст имеет красное подчёркивание. Что это и как это убрать?

Это автопроверка текста на корректность (spell check) в Android. Убирается это легко: добавляем в TextView android:inputType="textNoSuggestions"
Вторая часть: интеграция с социальными сетями и Android Studio
Третья часть: про монетизацию

0 коммент.:

Отправить комментарий