2013-07-26 8 views
1

Мне сказали, что я могу использовать второй линейный макет таким образом, чтобы мои кнопки растягивались, чтобы заполнить оставшееся пустое пространство вертикально. Я не знаю, куда идти отсюда. Любая помощь будет оценена по достоинству.Кнопки заполняют вертикальное пространство

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:orientation="vertical" > 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:orientation="horizontal" > 
<TableLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:gravity="center"> 
    <TableRow> 
     <Button 
      android:id="@+id/one" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_gravity="fill_vertical" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="1" /> 
     <Button 
      android:id="@+id/two" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="2" /> 
    </TableRow> 
    <TableRow> 
     <Button 
      android:id="@+id/three" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_gravity="fill_vertical" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="3" /> 
     <Button 
      android:id="@+id/four" 
      android:text="4" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:gravity="center" 
      android:layout_weight="1" /> 
    </TableRow> 
    <TableRow> 
     <Button 
      android:id="@+id/five" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="5" /> 
     <Button 
      android:id="@+id/six" 
      android:text="6" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:gravity="center" 
      android:layout_weight="1" /> 
    </TableRow> 
</TableLayout> 
</LinearLayout> 
</LinearLayout> 

ответ

2

Я думаю, что функция, которую вы ищете, это android: weightSum. Вот официальная справка: http://developer.android.com/reference/android/widget/LinearLayout.html#attr_android:weightSum

Таким образом, чтобы расширить таблицу макета на весь экран необходимо назначить weightSum от 3 до вашего TableLayout и разделить андроида: layout_weight от 1 до каждого TableRow. Это даст вам желаемый результат.

Так что ваш файл разметки XML будет выглядеть следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:orientation="vertical" > 
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:orientation="horizontal" > 
<TableLayout 

    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:weightSum="3" 
    android:gravity="center"> 
    <TableRow 
     android:layout_weight="1"> 
     <Button 
      android:id="@+id/one" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_gravity="fill_vertical" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="1" /> 
     <Button 
      android:id="@+id/two" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="2" /> 
</TableRow> 
<TableRow 
    android:layout_weight="1"> 
    <Button 
     android:id="@+id/three" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_gravity="fill_vertical" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:text="3" /> 
    <Button 
     android:id="@+id/four" 
     android:text="4" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="center" 
     android:layout_weight="1" /> 
</TableRow> 
<TableRow 
    android:layout_weight="1"> 
    <Button 
     android:id="@+id/five" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:text="5" /> 
    <Button 
     android:id="@+id/six" 
     android:text="6" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="center" 
     android:layout_weight="1" /> 
</TableRow> 
</TableLayout> 
</LinearLayout> 
</LinearLayout> 
+0

Это должен быть ответ, а не комментарий. – Androiderson

+0

Здравствуйте, Mr.Exception-al У меня нет 50 представителей, которые сейчас оставляют комментарии по его вопросу, чтобы подробно рассказать о его вопросе. Что ты предлагаешь мне. Ничего? Выше это ваше голосование не помогает делу. Благодаря! – Manu

+0

Hi Manu, к сожалению, правила этого сайта гласят, что в этом случае вы ничего не должны делать. – Androiderson

2

Я предполагаю, что вы хотите, чтобы кнопки, чтобы заполнить доступную высоту на экране. В этом случае, пожалуйста, смотрите в ответ здесь Android TableLayout height does not fills the whole screen

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:orientation="vertical" > 

    <TableLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="center" > 

     <TableRow 
      android:layout_height="0dp" 
      android:layout_weight="1" > 

      <Button 
       android:id="@+id/one" 
       android:layout_width="0dp" 
       android:layout_height="fill_parent" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:text="1" /> 

      <Button 
       android:id="@+id/two" 
       android:layout_width="0dp" 
       android:layout_height="fill_parent" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:text="2" /> 
     </TableRow> 

     <TableRow 
      android:layout_height="0dp" 
      android:layout_weight="1" > 

      <Button 
       android:id="@+id/three" 
       android:layout_width="0dp" 
       android:layout_height="fill_parent" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:text="3" /> 

      <Button 
       android:id="@+id/four" 
       android:layout_width="0dp" 
       android:layout_height="fill_parent" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:text="4" /> 
     </TableRow> 

     <TableRow 
      android:layout_height="0dp" 
      android:layout_weight="1" > 

      <Button 
       android:id="@+id/five" 
       android:layout_width="0dp" 
       android:layout_height="fill_parent" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:text="5" /> 

      <Button 
       android:id="@+id/six" 
       android:layout_width="0dp" 
       android:layout_height="fill_parent" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:text="6" /> 
     </TableRow> 
    </TableLayout> 

</LinearLayout> 

Обратите внимание, что строки таблицы теперь

android:layout_height="0dp" 
android:layout_weight="1" 

Это позволит ряд расширить, чтобы заполнить оставшееся пространство (с каждой строке получать 1/3 высоты экрана).

Я также изменил ширину макета кнопок на 0dp, так как вы используете вес. Также вам не нужно xmlns:android="http://schemas.android.com/apk/res/android" 3 раза. Вам нужно только это на родительском макете.

И, наконец, как многие из ваших кнопок используют один и тот же стиль. Я предлагаю вам посмотреть, возможно, используя стиль для этих кнопок. Вы можете узнать больше о стилях/темах по адресу http://developer.android.com/guide/topics/ui/themes.html.