我知道这已经很晚了,但我是 8tracks 的当前开发人员。您上面显示的(旧)2.x 应用程序正在被重写,但我可以向您展示旧开发人员为个人资料页面所做的事情。
在开始之前,我必须说这不是最好的方法,但 8tracks 应用程序 (2.x) 已经过时了。
所以回到代码...ProfileActivity
包含一个ProfileFragment
.
您使用“关注”按钮(和个人资料图片)看到的主要布局是这样的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!-- Image, name, location -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dip" >
<com.gdub.widget.ImageViewClickable
android:id="@+id/dj_avatar"
android:layout_width="110dip"
android:layout_height="110dip"
android:layout_marginRight="10dip"
android:background="@drawable/default_avatar_max200"
android:scaleType="centerCrop" />
<com.gdub.widget.CollapsingTextView
android:id="@+id/dj_location"
style="@style/mix.counts"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:layout_toRightOf="@id/dj_avatar" />
<ViewSwitcher
android:id="@+id/profile_action_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/dj_location"
android:layout_toRightOf="@id/dj_avatar" >
<Button
android:id="@+id/follow_btn"
style="@style/white_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/follow" />
<Button
android:id="@+id/edit_profile_btn"
style="@style/white_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/edit_profile" />
</ViewSwitcher>
</RelativeLayout>
<TextView
android:id="@+id/dj_bio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="-25dip"
android:gravity="left|center_vertical"
android:lineSpacingExtra="2dip"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:textColor="@color/default_text"
android:textSize="15sp" />
<include
android:id="@+id/profile_tabs"
layout="@layout/profile_tabs" />
</LinearLayout>
还有 profile_tabs…</p>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
android:orientation="horizontal">
<include
android:id="@+id/profile_mixes_button"
layout="@layout/profile_tab" />
<include
android:id="@+id/profile_followers_button"
layout="@layout/profile_tab" />
<include
android:id="@+id/profile_following_button"
layout="@layout/profile_tab" />
</LinearLayout>
如您所见,这是一个带有“模拟”选项卡的三个按钮的常规布局。
选项卡的内容也由 ViewSwitcher 决定:
<?xml version="1.0" encoding="utf-8"?>
<ViewSwitcher xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/profile_view_switcher"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inAnimation="@anim/fade_in_300"
android:outAnimation="@anim/fade_out_300"
android:background="@color/white">
<include
android:id="@+id/profile_loading"
layout="@layout/loading_view_full" />
<ListView
android:id="@+id/profile_content_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:cacheColorHint="#00000000"
android:divider="@null"
android:dividerHeight="0dip"
android:fadingEdge="none" />
</ViewSwitcher>
这显示了一个加载轮,然后切换到列表视图。没有其他可滚动的 ViewGroup。
基本上就是这样。
现在,如果您想让整个事物滚动,那么您需要使用自定义适配器并将上述布局设置为 Header(或者至少以巧妙的方式在适配器中使用 getItemType )。这样整个屏幕就是一个列表(具有列表的所有优化)。
我们(ab)在 dev 下的新 8tracks 应用程序中使用它。;)