2012-04-20 3 views
0

Я пытаюсь разместить TableRow с двумя кнопками в нижней части экрана, под другими элементами представления в макете, но если я туда поместил, TableRow исчезнет экрана. Я поставил сверху или посередине, никаких проблем.Место Вид внизу экрана/макета с помощью TableLayout

Я пробовал много сочетаний layout_gravity, gravity и weight, но я не могу это получить.

Заранее спасибо.

screenshot of the layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:gravity="center_horizontal" 
    android:text="@string/traza" 
    android:layout_margin="10sp"/> 

    <TableRow 
     android:id="@+id/tableRow8" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="3sp" 
     android:gravity="center" 
     android:weightSum="2" > 

     <Button 
      android:id="@+id/reiniciar" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:layout_margin="5sp" 
      android:background="@drawable/bordebutton" 
      android:text="@string/reiniciar" /> 

     <Button 
      android:id="@+id/comprobar" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:layout_margin="5sp" 
      android:background="@drawable/bordebutton" 
      android:text="@string/comprobar" /> 

    </TableRow> 

<android.gesture.GestureOverlayView 
    android:id="@+id/gestures" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fadeEnabled="true" 
    android:fadeOffset="3000" 
    android:gestureStrokeType="multiple" 
    android:eventsInterceptionEnabled="true" 
    android:orientation="vertical"/> 
</LinearLayout> 

ответ

2

Для этого вам необходимо использовать 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" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="10sp" 
     android:gravity="center_horizontal" 
     android:text="@string/traza" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TableRow 
     android:id="@+id/tableRow8" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="3sp" 
     android:gravity="center" 
     android:weightSum="2" 
     android:layout_alignParentBottom="true" > 

     <Button 
      android:id="@+id/reiniciar" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="5sp" 
      android:layout_weight="1" 
      android:background="@drawable/bordebutton" 
      android:text="@string/reiniciar" /> 

     <Button 
      android:id="@+id/comprobar" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_margin="5sp" 
      android:layout_weight="1" 
      android:background="@drawable/bordebutton" 
      android:text="@string/comprobar" /> 
    </TableRow> 

    <android.gesture.GestureOverlayView 
     android:id="@+id/gestures" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:eventsInterceptionEnabled="true" 
     android:fadeEnabled="true" 
     android:fadeOffset="3000" 
     android:gestureStrokeType="multiple" 
     android:orientation="vertical" /> 

</RelativeLayout> 
+0

Он не работает, он сбой :(04-21 17: 05: 06.363: E/AndroidRuntime (20964): java.lang.RuntimeException: не удалось запустить Activity ComponentInfo {es.hsk.ap/es.hsk.ap .juega.Trazos}: java.lang.ClassCastException: android.gesture.GestureOverlayView – Pelanes

+0

затем удалите 'android.gesture.GestureOverlayView' из вашего макета, очистите проект и запустите его. На самом деле я не добавил ** GestureOverlayView ** к макет сам, он уже упоминался в вашем макете.Если его сбой тогда, как вы могли его запустить? – waqaslam

+0

Он падает, когда я меняю LineaLayout на RelativeLayout, как вы сказали сначала. Я не могу удалить этот вид, он мне нужен. И проблема не в том, что это происходит, если вы используете другой макет посередине, например imageview – Pelanes

0

EDIT: Корневой элемент должен быть TableLayout, если вы хотите использовать функции, содержащиеся в этом View. У вас сейчас есть LinearLayout.

Я не вижу ничего упоминания о том, как не TableRow Виды вертикально размещены в documentation.

Из моего опыта, TableLayout всегда будет размещать вещи непосредственно под последней строкой.

Вы пытались использовать RelativeLayout, или LinearLayout, чтобы выполнить то, что вам нужно? Он намного более гибкий, чем TableLayout.

Вы также можете закрыть свой TableLayout и разместить под ним LinearLayout.

+0

Я попробовал LinearLayout вместо TableRow, но тот же проблема, вид объекта на нем, использовать весь размер экрана. Я хочу использовать весь доступный экран, но с этими двумя кнопками, видимыми в нижней части макета. Благодаря! – Pelanes