Как изменить высоту веб-просмотра во время выполнения?

У меня есть веб-просмотр и таблица, содержащая 4 кнопки. Я установил высоту веб-просмотра на 400 пикселей, чтобы кнопки отображались внизу экрана в портретном режиме. Моя проблема в том, что при переключении в ландшафтный режим кнопки не видны. Поэтому мне нужно изменить высоту веб-просмотра во время выполнения при изменении ориентации. Кто-нибудь знает, как этого добиться? Я могу зафиксировать изменение ориентации, используя функцию onConfigurationChanged.


Спасибо CommonsWare, я дал xml следующим образом. Приложение вылетает при запуске.

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

<RelativeLayout android:layout_alignParentTop="true">

<WebView
    android:id="@+id/appView"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent" />

</RelativeLayout>
<RelativeLayout
    android:layout_alignParentBottom="true">

<TableLayout
    android:id="@+id/TableLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:gravity="center_vertical">

<TableRow
    android:id="@+id/TableRow01" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center">

<ImageButton
    android:id="@+id/more"
    android:padding="1dip"
    android:src="@drawable/more1"
    android:layout_marginRight="15dip">
</ImageButton>
<ImageButton
    android:id="@+id/albums"
    android:padding="1dip"
    android:src="@drawable/albums1"
    android:layout_marginRight="15dip">
</ImageButton>
<ImageButton
    android:id="@+id/videos"
    android:padding="1dip"
    android:src="@drawable/videos"
    android:layout_marginRight="15dip">
</ImageButton>
<ImageButton
    android:id="@+id/artists"
    android:padding="1dip"
    android:src="@drawable/artists1"
    android:layout_marginRight="15dip">
</ImageButton>
</TableRow>
</TableLayout>
</RelativeLayout>
</LinearLayout>

person Bennet    schedule 26.02.2010    source источник


Ответы (1)


Разработайте свой макет так, чтобы избежать жестко запрограммированного значения 400px. Это не только не будет работать в ландшафтном режиме на любом эмуляторе / устройстве, на котором вы тестируете, но и не будет работать на меньших или больших экранах, как вы ожидаете.

Пожалуйста, используйте RelativeLayout с такими атрибутами, как android:layout_alignParentBottom для кнопок и android:layout_alignParentTop и android:layout_above для WebView. Затем ваш макет будет динамически адаптироваться к доступному пространству.

person CommonsWare    schedule 26.02.2010