Android - ScrollView就像带有地图+列表的foursquare

时间:2013-08-28 15:14:50

标签: android android-layout scrollview foursquare android-ui

这是Android等同于this iOS问题。

尝试在大约20%的屏幕(在ActionBar下)创建一个包含MapView的视图,屏幕的其余部分是ScrollView,当向下滚动时,重叠在MapView顶部并隐藏它。简而言之就像FourSquare的Android应用程序。 有什么想法吗?

4 个答案:

答案 0 :(得分:7)

我已经基于AndroidSlidingUpPanel进行了实施(非常感谢这个项目)。

enter image description here

详情http://android.amberfog.com/?p=915 源代码示例:https://github.com/dlukashev/AndroidSlidingUpPanel-foursquare-map-demo

答案 1 :(得分:4)

最后更新

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<fragment
    android:id="@+id/map_fragment"
    android:name="com.myapp.MapFragment"
    android:layout_width="match_parent"
    android:layout_height="fill_parent" />

<fragment
    android:id="@id/list_fragment"
    android:name="com.myapp.ListFragment"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent" />

然后我像这样在列表中添加一个不可见的标题:

@Override
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);

    View view = inflater.inflate(R.layout.listview, container, false);
    SwipeListView listView = (SwipeListView) view.findViewById(R.id.venue_list);

    // An invisible view added as a header to the list and clicking it leads to the mapfragment
    TextView invisibleView = new TextView(inflater.getContext());
    invisibleView.setBackgroundColor(Color.TRANSPARENT);
    invisibleView.setHeight(300);
    invisibleView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            listener.moveToMapFragment();
                                                                        }
    });
    listView.addHeaderView(invisibleView);

这不太理想,但它确实有效。我希望它对某人有所帮助..

答案 2 :(得分:1)

最简单的解决方案是为滑块内容(SlidingUpPanel的第二个参数)添加边距,然后删除淡化背景。全部都是从XML完成的。

答案 3 :(得分:0)

您可以在xml文件中声明嵌入ScrollView的{​​{1}},其中嵌入LinearLayout

MapView

然后,您可以通过指定<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center_horizontal" android:fillViewport="true" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.MapFragment" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > ...... Your list and other stuff ....... </LinearLayout> </LinearLayout> </ScrollView> 属性

来设置每个元素的大小

修改 IvanDanDo,在我们的讨论之后,我发现这个链接可以做你想要的(但不确定,我没试过):Android: Have an arbitrary View slide under another View like the software keyboard does