2015-09-02 3 views
0

У меня есть RelativeLayout в верхней части моего приложения. Ниже RelativeLayout у меня есть ViewPager.Переключить вид брата с RelativeLayout

Чтобы объяснить это так, чтобы это имело смысл, представьте себе, что высота экрана составляет 700 пикселей. RelativeLayout имеет высоту около 200 пикселей.

Я хочу, чтобы RelativeLayout позиционировался абсолютно в верхней части приложения, чтобы за ним стоял ViewPager. Затем я хочу добавить 200 пикселей paddingTop в ViewPager, чтобы он отображался в RelativeLayout.

Вот раскладка у меня сейчас (что, очевидно, не работает):

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <RelativeLayout 
     android:id="@+id/header" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     ... 

    </RelativeLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     /> 

</LinearLayout> 

я загружаю ListView с некоторыми данными по header:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ListView 
     android:id="@+id/listview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</LinearLayout> 

Как я могу это сделать?

ответ

0

Попробуйте изменить linearlayout на framelayout. Это позволит размещать взгляды друг на друга.

Затем введите код для просмотра страницы над релятивированием. Это заставит pageviewer появляться позади relativelayout, поскольку он отображается первым, а relativelayout отображается поверх него. Android отобразит представления в том порядке, в котором они объявлены.

Наконец, добавьте верхнее поле/дополнение к просмотру страницы, чтобы он выглядел расположенным ниже относительного отклонения.

+0

Такая же проблема с другим решением. Это удерживает 'header' в фиксированном положении, что означает, что если я прокручу вниз, он останется в своем положении. – user5291000

+0

Я должен упомянуть, что ниже 'header' является ListView, который я загружаю. Я добавил код к вопросу. – user5291000

+0

Трудно следить за тем, чего вы пытаетесь достичь. Пожалуйста, сделайте простой макет (сделанный в краске или что-то еще), чтобы проиллюстрировать, как вы хотите, чтобы он выглядел, и затем добавьте его в вопрос. –

0

Вот что вы можете сделать:

  • Использование RelativeLayout вместо LinearLayout как корень.
  • Переместить ViewPager (пейджер) вид на вершину ребенок RelativeLayout (заголовок)

    <RelativeLayout 
        xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:app="http://schemas.android.com/apk/res-auto" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" > 
        <android.support.v4.view.ViewPager 
         android:id="@+id/pager" 
         android:paddingTop="200px" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" />    
        <RelativeLayout 
         android:id="@+id/header" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content"> 
        </RelativeLayout> 
    </RelativeLayout> 
    
+0

Это удерживает 'header' в фиксированной позиции, что означает, что если я прокручу вниз, он останется в своем положении. Мне нужно его прокручивать нормально (с помощью ViewPager). – user5291000

+0

Я должен упомянуть, что ниже 'header' является ListView, который я загружаю. Я добавил код к вопросу. – user5291000

+0

@ user5291000, если вы хотите реплицировать макет профиля Twitter, ListView должен быть помещен внутри ViewPager. – Wilik

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