динамический размер макета Android - PullRequest
1 голос
/ 20 сентября 2011

Для многих TextViews "заголовка" на страницах, которые я разрабатываю для программы, я бы хотел, чтобы они были родительскими. Ширина / 2 затем корректно выровнялась.Хотя это было бы довольно просто кодировать в Java, я пытаюсь сделать как можно больше в макетах XML, чтобы избежать пересечений кода XML-Java до последних маленьких битов (нажатие кнопок, завершающая страница и т. Д.).

Нужно ли мне самому проходить каждую страницу и вычислять удельную ширину каждого элемента, или есть способ поместить что-то в строку "fill_parent / 2"?

РЕДАКТИРОВАТЬ: Забыли упомянуть, что вероятноключевое замечание - почти все, что я делаю, находится в RelativeLayouts, в этом проекте я очень мало использую LinearLayouts.

Ответы [ 2 ]

4 голосов
/ 20 сентября 2011

Если у вас есть LinearLayout, который находится на одном уровне слева и справа, вы можете сделать следующее:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:weightSum="2"
    android:gravity="left"
    android:orientation="horizontal">
    <TextView
        android:layout_weight="1"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:text="I take up half the width!!!1" />
</LinearLayout>

Установив weightSum для родителя, вы говорите, что веса детей должны равняться этой сумме. Если установить вес одного ребенка равным половине этого, это займет половину пространства. Обязательно установите ширину дочернего элемента равной 0, чтобы он знал, как использовать значение веса для вычисления своего пространства относительно его родителя.

Затем вы можете выровнять его по своему усмотрению, установив гравитацию для родительского LinearLayout.

0 голосов
/ 20 сентября 2011

Используйте табличное представление с двумя столбцами, где каждый столбец растянут и имеет текстовое представление.Затем скрыть второй текстовый просмотр

<TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="1">
  <TableRow>
    <TextView android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" Set Item Name "/>
    <TextView android:id="@+id/hiddenTextView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:visibility="invisible"/>
  </TableRow>
</TableLayout>
...