2010-07-02 3 views
1

Я просто хочу сделать:Как настроить содержание активности на основе текущей ориентации экрана?

 
if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) 
    setContentView(R.layout.search_portrait); 
else 
    setContentView(R.layout.search_landscape); 

Проблема заключается в том - getRequestedOrientation всегда возвращает -1.

Любые предложения?

ответ

5

Если вы просто меняете макет, вы должны действительно подумать о том, чтобы разместить макеты вашего портрета в /res/layout и ваши ландшафтные макеты в /res/layout-land (с теми же названиями), и Android автоматически выберет правильный макет.

+0

Скажите, будет ли это работать на некоторые странные ситуации, такие как: пейзаж с QWERTY клавиатурой, пейзажем большим ... все соответствующие упомянутые на этой ссылке: http://books.google.com/books?id=QdcYzuQx0DYC&pg=PA212&lpg=PA212&dq=/res/layout-land&source=bl&ots=xKaskx_2JU&sig=NjWDE3msogiveEHG4L5HdNWO2yc&hl=en&ei=HUIuTPuFFMH_nQeI6LneAw&sa=X&oi=book_result&ct=result&resnum=2&ved = 0CBYQ6AEwAQ # v = onepage & q =% 2Fres% 2Flayout-land & f = false – kape123

+0

Я сам не пробовал такие экзотические экранные конфиги, но да, я считаю, что это так. – Dave

+0

@ kape123 да, это будет работать. – yanchenko

1

Попробуйте добавить android:screenOrientation="portrait" или android:screenOrientation="landscape" к вашему манифесту для этой деятельности. Это будет ориентация по умолчанию ... это потому, что getRequestedOrientation «Возвращает текущую запрашиваемую ориентацию активности. Это будет либо ориентация, запрошенная в манифесте компонента, либо последняя запрашиваемая ориентация, заданная для setRequestedOrientation (int). ».

0

Он должен правильно работает, используйте эту

if(getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE) 

     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    else 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

setContentView(R.layout.main_activity); 

А также поместить пейзаж файл XML в

/RES/раскладка-земля

Примечание: имя файла макета должен быть такие же во всех каталогах макетов

ie

  • Рез/макет/activity_main
  • Реза/макет земля/activity_main
Смежные вопросы