2010-09-01 4 views
2

Мне нужно динамически (программно) развернуть самую верхнюю часть моего приложения на основе информации, загруженной из файла конфигурации.Как динамически масштабировать макет Android.

Сейчас в main.xml У меня есть

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout 
      android:id="@+id/LinearLayout01" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:background="@drawable/background"> 
    </LinearLayout> 

Так что я ищу способ изменить Android: layout_width и layout_height программно.

Любая помощь будет оценена

RM

EDIT:

В соответствии с предложениями, я попытался следующие:

LinearLayout l2 = (LinearLayout)findViewById(R.id.LinearLayout07); 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT,1); 
l2.setLayoutParams(params); 

Но это дает мне следующую ошибку при запуске:

Thread [<3> main] (Suspended (exception ClassCastException))  
FrameLayout.onLayout(boolean, int, int, int, int) line: 288 
FrameLayout(View).layout(int, int, int, int) line: 6133 
.... 
+0

Проверить это http://d.android.com/reference/android/widget/LinearLayout.LayoutParams.html –

+0

Я попробовал это, но я думаю, что им делать Somthing неправильно .. больной пост более код –

ответ

3
LinearLayout.LayoutParams params = 
       new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT,1); 


layout.setLayoutParams(params); 

Где находится ваш LinearLayout, полученный с помощью findViewById. Параметры для ширины и высоты - fill_parent в моем примере с весом 1.

Вместо опций fill_parent вы можете, конечно, использовать фиксированный размер в пикселях или опустить вес, если вы этого не хотите.

+0

вот что IV было но приложение падает, когда я добавляю этот код ... это две последние строки стека: (Suspended (исключение ClassCastException)) \t FrameLayout.onLayout (boolean, int, int, int, int) line: 288 –

+0

Возможно, вес делает что-то странное для компонентов внутри. Можете ли вы попробовать еще раз, но без последнего параметра (без 1 в конце). Попробуйте также добавить размер в пикселях вместо fill_parent. Появляется ли такая же ошибка? – Milan

0

Я обнаружил ошибку, когда вы пытаетесь получить свой LinearLayout. Вы пишете его как LinearLayout07 вместо LinearLayout01.

Смежные вопросы