#android #xml #scrollview #tablelayout
#Android #xml #scrollview #tablelayout
Вопрос:
РЕДАКТИРОВАТЬ: TableLayout не работает должным образом? Я вижу, большинство из вас говорят использовать относительный макет и пропустить tableview?
ПРОБЕЛ после данных 1 и 2, от которых я пытался избавиться. Если я добавлю тот же XML-код без TableLayout, тогда все будет в порядке. Что мне изменить?
В 3-й строке с «100» я хотел, чтобы справа было 2 ввода textviews. Я перепробовал все, что мог придумать, и это не идет вправо. Я удалил 2-й textview, чтобы посмотреть, помогло ли это, но особой разницы не имело.
Кто-нибудь может сказать мне, что я сделал не так? Спасибо!
Вот XML:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TableLayout android:layout_width="fill_parent"
android:stretchColumns="*" android:layout_height="fill_parent"
android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="6px">
<TableRow style="@style/FormRows" android:layout_marginTop="15sp">
<Button android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_marginLeft="5px"
android:layout_span="3" android:layout_weight="1" android:text="Save"
android:id="@ id/dgSave" />
</TableRow>
<TableRow style="@style/FormRows">
<TextView android:layout_width="70sp"
android:layout_height="wrap_content" android:textSize="16sp"
android:layout_weight="1" android:text="Data 1" />
<Spinner android:id="@ id/dgData0" android:layout_weight="2"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
</TableRow>
<TableRow>
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<EditText android:text="100" android:selectAllOnFocus="true"
android:imeOptions="actionNext" android:numeric="integer"
android:width="100sp" android:id="@ id/dgWarn0" android:gravity="right"
android:layout_height="wrap_content" android:layout_weight="1"
android:layout_gravity="right" android:layout_span="2" />
<EditText android:text="100" android:selectAllOnFocus="true"
android:imeOptions="actionNext" android:numeric="integer"
android:width="100sp" android:id="@ id/dgWarn1" android:gravity="right"
android:layout_height="wrap_content" android:layout_weight="1"
android:layout_gravity="right" android:layout_span="2" />
</LinearLayout>
</TableRow>
<TableRow style="@style/FormRows">
<TextView android:layout_width="70sp"
android:layout_height="wrap_content" android:textSize="16sp"
android:layout_weight="1" android:text="Data 2" />
<Spinner android:id="@ id/dgData1" android:layout_weight="2"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
</TableRow>
</TableLayout>
</ScrollView>
Спасибо! за любую помощь!!!
Отметить
Комментарии:
1. Вы должны использовать Table Layout? Потому что мы можем перенести этот макет, используя относительный макет.
2. Я думал, что пробел после данных из-за
android:layout_weight="1"
, но вы сказали, что вас устраивает этот xml без выводаTableLayout
…3. Я не уверен, почему, возможно, потому, что я только что обнаружил, что изучаю LinearLayout и RelativeLayout и повторно использую их снова и снова, но я никогда не использовал Table Layout… никогда не использовал это. Это было бы ОЧЕНЬ просто с относительной компоновкой. Расположите кнопку сохранения там, где вы хотите, сверху, выровняйте правые края блесен с правым краем кнопки сохранения, поместите метки данных справа от блесен и т.д. … Это должно быть несложно.
4. Вам следует ознакомиться с руководством Googles и посмотреть, как они использовали TableLayout: developer.android.com/guide/tutorials/views / …
5. Не могли бы вы, пожалуйста, поделиться макетом желаемого макета? @Venkatesh упомянул решение проблемы с помощью
RelativeLayout
. Я полностью согласен с этим, это гораздо удобнее для таких сложных представлений.TableLayout
был создан для таблиц (…) в любом случае, сRelativeLayout
вы также могли бы сохранить количество макетов, так что это был бы ваш лучший выбор.
Ответ №1:
Вот как может выглядеть RelativeLayout. Я сделал это довольно быстро… в нем отсутствуют некоторые другие поля и т.д… но это отправная точка.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button android:id="@ id/save"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_margin="20dp"
android:text="Save" />
<Spinner android:id="@ id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/save" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/spinner1"
android:text="Data 1" />
<EditText android:id="@ id/editbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/save"
android:layout_below="@id/spinner1" />
<Spinner android:id="@ id/spinner2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/save"
android:layout_below="@id/editbox" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/spinner2"
android:text="Data 2" />
</RelativeLayout>
Комментарии:
1. Является ли TableLayout эффективным по сравнению с относительным макетом?
2. Я не знаю о какой-либо разнице в эффективности… но, учитывая лишь несколько задействованных представлений, я не могу представить, что это может иметь большое значение в любом случае.
Ответ №2:
Эй, я быстро просмотрел это, и, возможно, TableLayout теперь лучший выбор для этого конкретного действия. Рассматривали ли вы возможность использования RelativeLayout? Там вы можете определить места виджета, разместив их рядом с другими виджетами (например, какая-то кнопка находится под текстовым представлением).
Это всего лишь предположение, возможно, есть нечто большее, чем эта конкретная проблема, и я еще не уловил полной картины.
Здесь вы можете прочитать о RealtiveLayout:
http://developer.android.com/reference/android/widget/RelativeLayout.html
http://developer.android.com/resources/tutorials/views/hello-relativelayout.html
редактировать: Максимус, великие умы мыслят одинаково, между нашими комментариями 30 секунд 🙂