1

Я пытаюсь создать прокручиваемый профиль для моего клиента для социальной сети.RelativeLayout и ListView внутри ScrollView

Вот мой макет:

<android.support.v4.widget.SwipeRefreshLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/swipe_container" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fillViewport="true"> 

    <RelativeLayout 
     android:id="@+id/RelativeLayout1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 

     <RelativeLayout 
      android:id="@+id/user_profile" 
      android:layout_width="fill_parent" 
      android:layout_height="440dp" 
      android:layout_alignParentTop="false" 
      android:layout_centerHorizontal="true"> 

      <ImageView 
       android:id="@+id/fragment_user_profile_avatar" 
       android:layout_width="fill_parent" 
       android:layout_height="300dp" 
       android:scaleType="centerCrop" 
       android:layout_alignParentTop="true" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" /> 

      <TableLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="#0277BD" 
       android:layout_below="@+id/fragment_user_profile_avatar" 
       android:layout_alignParentLeft="false" 
       android:layout_alignParentStart="false" 
       android:layout_alignParentBottom="false" 
       android:id="@+id/tableLayout"> 

       <TableRow 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"> 
        <LinearLayout android:gravity="center" android:orientation="vertical" android:id="@+id/header_user_profile_friends_container" android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="33.0" style="?android:attr/borderlessButtonStyle"> 

         <TextView android:textSize="14.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_friends_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="-2.0dip" android:text="@string/friends" 
          android:fontFamily="sans-serif-light" /> 

         <TextView android:textSize="26.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_friends" android:layout_width="wrap_content" android:layout_height="wrap_content" 
          android:fontFamily="sans-serif-light" /> 
        </LinearLayout> 
        <LinearLayout android:gravity="center" android:orientation="vertical" android:id="@+id/header_user_profile_followers_container" android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="33.0" style="?android:attr/borderlessButtonStyle"> 

         <TextView android:textSize="14.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_followers_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="-2.0dip" android:text="@string/followers" 
          android:fontFamily="sans-serif-light" /> 

         <TextView android:textSize="26.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_followers" android:layout_width="wrap_content" android:layout_height="wrap_content" 
          android:fontFamily="sans-serif-light" /> 
        </LinearLayout> 
        <LinearLayout android:gravity="center" android:orientation="vertical" android:id="@+id/header_user_profile_groups_container" android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="33.0" style="?android:attr/borderlessButtonStyle"> 

         <TextView android:textSize="14.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_groups_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="-2.0dip" android:text="@string/groups" 
          android:fontFamily="sans-serif-light" /> 

         <TextView android:textSize="26.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_groups" android:layout_width="wrap_content" android:layout_height="wrap_content" 
          android:fontFamily="sans-serif-light" /> 
        </LinearLayout> 
       </TableRow> 

       <TableRow 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"> 

        <LinearLayout android:gravity="center" android:orientation="vertical" android:id="@+id/header_user_profile_photos_container" android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="33.0" style="?android:attr/borderlessButtonStyle"> 

         <TextView android:textSize="14.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_photos_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="-2.0dip" android:text="@string/photos" 
          android:fontFamily="sans-serif-light" /> 

         <TextView android:textSize="26.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_photos" android:layout_width="wrap_content" android:layout_height="wrap_content" 
          android:fontFamily="sans-serif-light" /> 
        </LinearLayout> 
        <LinearLayout android:gravity="center" android:orientation="vertical" android:id="@+id/header_user_profile_videos_container" android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="33.0" style="?android:attr/borderlessButtonStyle"> 

         <TextView android:textSize="14.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_videos_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="-2.0dip" android:text="@string/videos" 
          android:fontFamily="sans-serif-light" /> 

         <TextView android:textSize="26.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_videos" android:layout_width="wrap_content" android:layout_height="wrap_content" 
          android:fontFamily="sans-serif-light" /> 
        </LinearLayout> 
        <LinearLayout android:gravity="center" android:orientation="vertical" android:id="@+id/header_user_profile_audios_container" android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="33.0" style="?android:attr/borderlessButtonStyle"> 

         <TextView android:textSize="14.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_audios_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="-2.0dip" android:text="@string/audios" 
          android:fontFamily="sans-serif-light" /> 

         <TextView android:textSize="26.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_audios" android:layout_width="wrap_content" android:layout_height="wrap_content" 
          android:fontFamily="sans-serif-light" /> 
        </LinearLayout> 
       </TableRow> 
      </TableLayout> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:id="@+id/user_name" 
       android:textColor="#ffffffff" 
       android:textSize="34sp" 
       android:layout_above="@+id/age_city" 
       android:layout_centerHorizontal="true" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textColor="#ffffffff" 
       android:id="@+id/online_status" 
       android:textSize="15sp" 
       android:layout_alignBottom="@+id/fragment_user_profile_avatar" 
       android:layout_centerHorizontal="true" 
       android:layout_marginBottom="35dp" /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:id="@+id/age_city" 
       android:textColor="#FFFFFFFF" 
       android:textSize="16sp" 
       android:layout_above="@+id/online_status" 
       android:layout_centerHorizontal="true" /> 
     </RelativeLayout> 

     <ExpandableListView 
      android:id="@+id/expandable_list" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:cacheColorHint="#00000000" 
      android:listSelector="@android:color/transparent" 
      android:textColor="@android:color/white" 
      android:transcriptMode="normal" 
      android:fastScrollEnabled="false" 
      android:footerDividersEnabled="false" 
      android:headerDividersEnabled="false" 
      android:layout_below="@+id/user_profile" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="false" 
      android:layout_alignParentTop="false" 
      android:layout_alignWithParentIfMissing="false" 
      android:layout_alignParentRight="false" 
      android:layout_alignParentBottom="false" /> 

    </RelativeLayout> 
</ScrollView> 

И когда я запускаю мое приложение, я могу прокрутить мою ListView, но user_profile макет просто остаться на своем месте. Но я хочу сделать его прокручиваемым тоже. Пожалуйста, помогите мне. Заранее спасибо.

EDIT

Вы, ребята, удивительно! Большое спасибо за вашу помощь, теперь ее работа должна быть!

+1

Не помещайте ListView внутри ScrollView. Вытащите его, а затем попробуйте. –

+0

@GokhanArik, ладно, но как? я пытаюсь, но потом scrollview с relativelayout просто заполнить экран – dennes544

+0

Пожалуйста, никого! – dennes544

ответ

3

user_profile.xml

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/user_profile" 
     android:layout_width="fill_parent" 
     android:layout_height="440dp" 
     android:layout_alignParentTop="false" 
     android:layout_centerHorizontal="true"> 

     <ImageView 
      android:id="@+id/fragment_user_profile_avatar" 
      android:layout_width="fill_parent" 
      android:layout_height="300dp" 
      android:scaleType="centerCrop" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" /> 

     <TableLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#0277BD" 
      android:layout_below="@+id/fragment_user_profile_avatar" 
      android:layout_alignParentLeft="false" 
      android:layout_alignParentStart="false" 
      android:layout_alignParentBottom="false" 
      android:id="@+id/tableLayout"> 

      <TableRow 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 
       <LinearLayout android:gravity="center" android:orientation="vertical" android:id="@+id/header_user_profile_friends_container" android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="33.0" style="?android:attr/borderlessButtonStyle"> 

        <TextView android:textSize="14.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_friends_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="-2.0dip" android:text="@string/friends" 
         android:fontFamily="sans-serif-light" /> 

        <TextView android:textSize="26.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_friends" android:layout_width="wrap_content" android:layout_height="wrap_content" 
         android:fontFamily="sans-serif-light" /> 
       </LinearLayout> 
       <LinearLayout android:gravity="center" android:orientation="vertical" android:id="@+id/header_user_profile_followers_container" android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="33.0" style="?android:attr/borderlessButtonStyle"> 

        <TextView android:textSize="14.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_followers_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="-2.0dip" android:text="@string/followers" 
         android:fontFamily="sans-serif-light" /> 

        <TextView android:textSize="26.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_followers" android:layout_width="wrap_content" android:layout_height="wrap_content" 
         android:fontFamily="sans-serif-light" /> 
       </LinearLayout> 
       <LinearLayout android:gravity="center" android:orientation="vertical" android:id="@+id/header_user_profile_groups_container" android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="33.0" style="?android:attr/borderlessButtonStyle"> 

        <TextView android:textSize="14.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_groups_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="-2.0dip" android:text="@string/groups" 
         android:fontFamily="sans-serif-light" /> 

        <TextView android:textSize="26.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_groups" android:layout_width="wrap_content" android:layout_height="wrap_content" 
         android:fontFamily="sans-serif-light" /> 
       </LinearLayout> 
      </TableRow> 

      <TableRow 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent"> 

       <LinearLayout android:gravity="center" android:orientation="vertical" android:id="@+id/header_user_profile_photos_container" android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="33.0" style="?android:attr/borderlessButtonStyle"> 

        <TextView android:textSize="14.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_photos_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="-2.0dip" android:text="@string/photos" 
         android:fontFamily="sans-serif-light" /> 

        <TextView android:textSize="26.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_photos" android:layout_width="wrap_content" android:layout_height="wrap_content" 
         android:fontFamily="sans-serif-light" /> 
       </LinearLayout> 
       <LinearLayout android:gravity="center" android:orientation="vertical" android:id="@+id/header_user_profile_videos_container" android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="33.0" style="?android:attr/borderlessButtonStyle"> 

        <TextView android:textSize="14.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_videos_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="-2.0dip" android:text="@string/videos" 
         android:fontFamily="sans-serif-light" /> 

        <TextView android:textSize="26.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_videos" android:layout_width="wrap_content" android:layout_height="wrap_content" 
         android:fontFamily="sans-serif-light" /> 
       </LinearLayout> 
       <LinearLayout android:gravity="center" android:orientation="vertical" android:id="@+id/header_user_profile_audios_container" android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="33.0" style="?android:attr/borderlessButtonStyle"> 

        <TextView android:textSize="14.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_audios_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="-2.0dip" android:text="@string/audios" 
         android:fontFamily="sans-serif-light" /> 

        <TextView android:textSize="26.0sp" android:textColor="#ffffffff" android:id="@+id/fragment_user_profile_audios" android:layout_width="wrap_content" android:layout_height="wrap_content" 
         android:fontFamily="sans-serif-light" /> 
       </LinearLayout> 
      </TableRow> 
     </TableLayout> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:id="@+id/user_name" 
      android:textColor="#ffffffff" 
      android:textSize="34sp" 
      android:layout_above="@+id/age_city" 
      android:layout_centerHorizontal="true" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textColor="#ffffffff" 
      android:id="@+id/online_status" 
      android:textSize="15sp" 
      android:layout_alignBottom="@+id/fragment_user_profile_avatar" 
      android:layout_centerHorizontal="true" 
      android:layout_marginBottom="35dp" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:id="@+id/age_city" 
      android:textColor="#FFFFFFFF" 
      android:textSize="16sp" 
      android:layout_above="@+id/online_status" 
      android:layout_centerHorizontal="true" /> 
    </RelativeLayout> 

list_view.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.SwipeRefreshLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/swipe_container" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

    <ExpandableListView 
     android:id="@+id/expandable_list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:cacheColorHint="#00000000" 
     android:listSelector="@android:color/transparent" 
     android:textColor="@android:color/white" 
     android:transcriptMode="normal" 
     android:fastScrollEnabled="false" 
     android:footerDividersEnabled="false" 
     android:headerDividersEnabled="false" 
     android:layout_below="@+id/user_profile" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="false" 
     android:layout_alignParentTop="false" 
     android:layout_alignWithParentIfMissing="false" 
     android:layout_alignParentRight="false" 
     android:layout_alignParentBottom="false" /> 

YourActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.list_view); 

    // inflate header to add to list view header 
    ListView listView = (ListView) findViewById(R.id.expandable_list); 
    listView.addHeaderView(getLayoutInflater().inflate(R.layout.user_profile, listView, false)); 

...add list adapter/other setup 
+0

сейчас другой проблема. listview автоматически прокручивает список вниз при запуске приложения. как заставить его оставаться наверху (заголовок) – dennes544

+2

попробуйте добавить android: transcriptMode = "disabled" вместо android: transcriptMode = "normal" в xml списка. –

+0

Да, это работает, спасибо! – dennes544

0

Прежде всего никогда не ставил один прокручивать контейнер/виджет внутри другого прокруткой контейнера виджета - это создаст проблемы (поверьте мне, я пробовал :))

Насколько я понимаю, проблема, которую вы хотите иметь прокручивать список с данными профиля пользователя вверху?

Я хотел бы сделать это таким образом

в адаптере переопределение

@Override 
public int getViewTypeCount() { 
    return MY_VIEW_TYPE_COUNTER //for example 2; 
} 

и

@Override 
public int getItemViewType(int position) { 
    if (position == 0) 
     return USER_PROFILE_TYPE_CONSTANT; 
    else 
     return NORMAL_LIST_ELEMENT_CONSTANT; 
} 

и после этого в методе GetView

public View getView(int position, View convertView, ViewGroup parent) { 
    int type = getItemViewType(position); 
    if(type == USER_PROFILE_TYPE_CONSTANT) 
     /*inflate and set correct user profile view*/ 
    else 
     /* inflate and set "normal" list item*/ 
    return convertView 
} 

Надежда Я понял проблему кор прямо :) Если нет, уточните, пожалуйста,

+0

Спасибо за ваш ответ, но данные профиля пользователя должны прокручиваться списком, поэтому, когда я прокручиваю вверх, данные профиля прокручиваются слишком – dennes544

+0

, тогда для меня это похоже на решение, предлагаемое @TheRedBaron - это ответ - поместите свой профиль пользователя в другой XML файл, надуть программным способом в виде активности/фрагмента со списком и добавить его как headerview - он просто останется в верхней части списка независимо от того, как вы прокручиваете :) – bartol

+0

. он не должен оставаться на вершине, он должен прокручивать экран со списком контента – dennes544

1

Возможно, вы захотите полностью избавиться от ScrollView и поместить файл RelativeLayout 'user_profile' в отдельный файл макета, чтобы раздуть его как заголовок в ExpandableListView. Как это:

ExpandableListView listView = (ExpandableListView) findViewById(R.id.expandable_list); 
LayoutInflater inflater = getLayoutInflater(); 
ViewGroup header = (ViewGroup) inflater.inflate(R.layout.user_profile, listView, false); 
listView.addHeaderView(header); 
Смежные вопросы