2014-10-16 3 views
0

Я должен создать какое-то приложение новостей, в котором есть список Новостей. При прослушивании следует показывать подробные новости. 1. Если телефон находился в режиме «Портрет», детали отображаются в другом действии. 2. Если телефон был в «Пейзаж», детали отображаются рядом с списком новостей в фрагменте макета детали в том же действии.Показать группу просмотра только в определенной ориентации

(есть фрагмент «Новости Список» и «Детали»)

Что я не могу добиться, чтобы избавиться от пространства Подробности фрагмент будет принимать - если бы я был в ландшафтном режиме - в Портретный режим.

Это потому, что я упомянул две пустые группы представлений как контейнер фрагментов в файле макета активности.

Я не хочу делать отдельный макет для каждой ориентации.

Есть ли способ скрыть или выровнять группу просмотра, если она пуста?

Соответствующие коды:

Главная XML активность:

<LinearLayout 
     android:id="@+id/news_list_container" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="0.4" 
     > 
     </LinearLayout> 

    <LinearLayout 
     android:id="@+id/details_container" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="0.6" 
     > 
     </LinearLayout> 




</LinearLayout> 

Основной класс активности - добавление фрагментов в соответствии с моей ориентацией:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     //get orientation first 
     if(this.getResources().getConfiguration().orientation==1) { //portrait 

      NewsList_fragment newsFrag = new NewsList_fragment(); //init any fragments that may be used 

      FragmentManager fManager = getFragmentManager(); //prepare fragment manager 
      FragmentTransaction fTransaction = fManager.beginTransaction(); 

      // Add fragments using fTransaction and then commit 
      fTransaction.add(R.id.news_list_container, newsFrag); 
      fTransaction.commit(); 
      } 

     else if (this.getResources().getConfiguration().orientation==2) { //landscape 

      NewsList_fragment newsFrag = new NewsList_fragment(); //init any fragments that may be used 
      Details_fragment detailsFrag = new Details_fragment(); 


      FragmentManager fManager = getFragmentManager(); //prepare fragment manager 
      FragmentTransaction fTransaction = fManager.beginTransaction(); 

      // Add fragments using fTransaction and then commit 
      fTransaction.add(R.id.news_list_container, newsFrag); 
      fTransaction.add(R.id.details_container, detailsFrag); 

      fTransaction.commit(); 
      } 

Спасибо заранее

+0

Я решил свою проблему с details_view.setVisibility (View.GONE); Спасибо всем, кто показал свою озабоченность –

ответ

0

В в вашем случае вам необходимо установить видимость la yout содержащий фрагмент детали для View.GONE. View.GONE подразумевает, что макет невидим и не занимает места. View.INVISIBLE означает, что представление просто невидимо, но пространство все еще выполняется.

LinearLayout detailsContainer = (LinearLayout) findViewById(R.id.details_container); 
int orientation = getResources().getConfiguration.orientation; 
if (orientation == 1) // means orientations is portrait 
    detailsContainer.setVisibility(View.GONE); 
+0

Это трюк. Благодаря тонну :) –

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

  • Нет связанных вопросов^_^