2012-05-30 3 views
4

Мне нужна помощь в дополнение к макетам android. Для примера:Различные ориентации экрана

Фактически я использую представление, называемое daily.xml. Этот вид содержит флиппер, который программно заполняется 5 списками ListViews, которые нужно перевернуть, если пользователь хочет.

<?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:orientation="vertical" 
android:background="@drawable/background"> 

    <de.oszimtcc.timetableview.TimetableFlipperView 
     android:id="@+id/flipper" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:layout_margin="20dp" 
     android:background="@android:color/transparent" 
     android:cacheColorHint="@android:color/transparent" > 
    </de.oszimtcc.timetableview.TimetableFlipperView> 
</LinearLayout> 

Flipper в TimetableScreen.java

activity.setContentView(R.layout.daily); 
    Log.i(TimetableApplication.LOG_TAG,"Start create Timetable-Aplication"); 
    activity.setContentView(R.layout.daily); 

    activity.inflater = LayoutInflater.from(this.activity);  
    flipper = (TimetableFlipperView) activity.findViewById(R.id.flipper); 
    dayListView = (ListView) activity.findViewById(R.id.dayListView); 
    flipper.AddContent(**Content to show **); 

Теперь я хочу добавить landscapemode.In этих режимов я не хава такой плавник, причина есть достаточно места, чтобы показать все ListViews на горизонтальные линейный layout.So я создал макет-землю Ресурсосберегающей папки добавить еще daily.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:orientation="horizontal" 
android:background="@drawable/background"> 

<de.oszimtcc.timetableview.BlockListView 
    android:id="@+id/dayListViewMonday" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:padding="5dp" 
    android:listSelector="@drawable/day_selector" 
    android:background="@android:color/transparent" 
android:cacheColorHint="@android:color/transparent"> 
</de.oszimtcc.timetableview.BlockListView> 

...the same ListView again for 4 times, with different android:id... 

</LinearLayout> 

Но как я могу справиться с этим в мой TimetableScreen.java класс? Потому что нет ласт я не могу использовать мой конструктор по умолчанию для инициализации класса. Должен ли я вызывать разные методы каждый раз, когда вызывается onCreate или есть ли более хорошая возможность справиться с этим?

Большое спасибо Kooki!

ответ

3

Вы можете использовать getResources().getConfiguration().orientation, чтобы узнать ориентацию экрана. Если это ландшафтный режим, не инициализируйте переменную flipper. Я добавил только одну строку в ваш код, проверить контрольное заявление if.

activity.setContentView(R.layout.daily); 
Log.i(TimetableApplication.LOG_TAG,"Start create Timetable-Aplication"); 
activity.setContentView(R.layout.daily); 

if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_POTRAIT) { //Check this statement 
activity.inflater = LayoutInflater.from(this.activity);  
flipper = (TimetableFlipperView) activity.findViewById(R.id.flipper); 
dayListView = (ListView) activity.findViewById(R.id.dayListView); 
flipper.AddContent(**Content to show **); 
} else { 
//Code for Landscape mode 
} 
+1

Спасибо, много работает :-) – Kooki

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