Список отступов в TextView
У меня есть TextView, который я заполняю текстом из строковых ресурсов в файле strings.xml. Строковый ресурс содержит <li> для создания списка маркеров внутри TextView. Моя проблема в том, что я хочу контролировать отступ строк в списке маркеров, которые охватывают более одной строки. По умолчанию текст не отступается от пули, поэтому выглядит некрасиво. Можно ли это сделать с помощью параметров стиля или создать пули каким-то другим способом?
Спасибо заранее.
изменить:
Это действительно ответ? У меня нет проблем с созданием списка пули, как описано в этих ссылках, но у меня проблемы с правильной компоновкой. Отступы таковы:
- текст, выходящий за пределы ширины
линии.
И я хочу, чтобы "линии", по крайней мере, начинались с отступов до текста после пули. То, что я пытаюсь достичь.
Ответы
Ответ 1
Я удивлен, что, похоже, с этой проблемой нет. Я имею в виду, что список пулей не может быть таким необычным в отношении диалогов, часто задаваемых вопросов и т.д., И пуля не должна содержать слишком много текста, чтобы охватить более одной строки и столкнуться с этой проблемой.
Во всяком случае, я должен решить это сейчас:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
android:id="@+id/ScrollViewTipsLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/TipsLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TableLayout
android:layout_height="wrap_content"
android:id="@+id/TableLayout01"
android:layout_width="wrap_content"
>
<TableRow>
<TextView android:id="@+id/tvIngress"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@+string/tv_picking_content_ingress"
android:layout_span="2"
android:singleLine="false"
android:layout_weight="1"
/>
</TableRow>
<TableRow>
<TextView android:id="@+id/tvCleaningDot1"
android:layout_height="wrap_content"
android:text="•"
android:singleLine="false"
/>
<TextView android:id="@+id/tvCleaningFirst"
android:layout_height="wrap_content"
android:text="@+string/tv_picking_content_first"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="left"
android:singleLine="false"
/>
</TableRow>
<TextView android:id="@+id/tvCleaningDot2"
android:layout_height="wrap_content"
android:text="•"
android:singleLine="false"
/>
<TextView android:id="@+id/tvCleaningSecond"
android:layout_height="wrap_content"
android:text="@+string/tv_picking_content_second"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="left"
android:singleLine="false"
/>
</TableRow>
</TableLayout>
</RelativeLayout>
Я использую его для представления статического текста в списке маркеров, поэтому я не хочу динамически создавать пулю + текст в коде. Если у кого-нибудь есть предложение, как лучше сделать то же самое, пожалуйста, просветите меня.
Btw, если вы идете с решением, предложенным во второй ссылке выше:
android:text="<ol><li>item 1\n</li><li>item 2\n</li></ol>
Вторая, третья и т.д. строка в пуле, которая охватывает более одной строки, не получит такого же отступа, как первая строка, что довольно уродливо.
Ответ 2
Спасибо @Bjorn
Вы также можете сделать что-то вроде ниже.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/point"
android:textAppearance="?android:attr/textAppearanceSmall"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Your Text Here"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="14sp" />
</LinearLayout>
Ответ 3
Как я решил эту проблему, я использовал RelativeLayout и marginLeft. MarginLeft помещает пробел между ним и предыдущим элементом.
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbarTrackVertical="@drawable/scrollbar_vertical_track"
android:scrollbarThumbVertical="@drawable/scrollbar_vertical_thumb"
android:scrollbarSize="12dip">
<RelativeLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10sp">
<TextView
android:id="@+id/body_text3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:lineSpacingExtra="3sp"
android:text="Main paragraph of text, before the bulleted list"
android:textSize="15sp" />
<TextView
android:id="@+id/type1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:lineSpacingExtra="3sp"
android:text="• First bullet"
android:textSize="15sp"
android:layout_below="@+id/body_text3"
android:layout_marginLeft="25dp" />
<TextView
android:id="@+id/type2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:lineSpacingExtra="3sp"
android:text="• Second bullet"
android:textSize="15sp"
android:layout_below="@+id/type1"
android:layout_marginLeft="25dp" />
</RelativeLayout>
</ScrollView>
Ответ 4
Просто попробуйте указать ключевой ответ на вопрос:
- чтобы создать список маркеров, используйте
TableLayout
с двумя столбцами для каждой строки. Один столбец для TextView
пули, а другой для текста
- чтобы текст
TextView
заполнил оставшуюся пустыми TableRow
и отступом в новой строке, установите вес на 1. Вы можете установить вес пули на ноль или просто не установить вес пули и не пустить его
- исходя из моего опыта, изменение параметра ширины не влияет на текст и пулю. Поэтому вы можете оставить его пустым или установить его на все, что хотите.
Пример:
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/bullet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/bullet"/>
<TextView
android:id="@+id/TextView01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="this is the text of a bullet list"/>
</TableRow>
</TableLayout>