如何在Android中添加水平滚动视图和列表视图

3

我正在尝试创建一个应用程序,其中需要创建一个列表视图,但在其顶部,我想要一个水平的列表视图来显示多个数据。我很困惑怎么做,请帮帮我。

MainActivityXML

<RelativeLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".HomePage">

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="8dp"
            android:id="@+id/mydata"
            android:orientation="vertical">
        </LinearLayout>

</ScrollView>

mydata 中,我想添加动态 XML 布局,即:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
    <LinearLayout
        android:id="@+id/mainLinearLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:orientation="horizontal" >
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/ic_launcher"
            android:layout_marginTop="5dp"
            android:layout_marginLeft="10dp"/>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="10dp"
            android:text="ABC DEF JKL"
            android:textColor="@android:color/black" />
    </LinearLayout>
</RelativeLayout>

我希望在main_activity.xml中添加一个水平列表视图,但是我无法做到这一点。

水平列表视图(HorizontialListView)

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="#fff"
  >

  <com.test.ui.HorizontialListView
    android:id="@+id/listview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#ddd"
  />

</LinearLayout>

这是我的horizontalitems
 <LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#fff"
    >

    <ImageView
        android:id="@+id/image"
        android:layout_width="150dip"
        android:layout_height="150dip"
        android:scaleType="centerCrop"
        android:src="@mipmap/ic_launcher"
        />

    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="#000"
        android:gravity="center_horizontal"
        />

</LinearLayout>

我想创建像这样的东西 I want to create like this 我面临的问题是如何将它们全部连接起来。请在此指导我。

@HeisenBerg 不要放在滚动视图下面,我想把它放在滚动视图的顶部。 - Pooja Dubey
我认为ScrollView只能包含一个直接子元素。因此,在ScrollView内创建一个垂直线性布局,并在其中创建您的水平ListView和其他LinearLayout(myData)。 - Drunken Daddy
@HeisenBerg,我们该怎么做呢?我需要在顶部有一个水平滚动条。 - Pooja Dubey
1
如果您的横向ListView需要滚动并且希望能够滚动到全部内容,则需要将它们都添加到ScrollView中。在ScrollView中,您需要设置一个LinearLayout,在其中放置您的横向ListView,并对该LinearLayout应用权重,同样地,您的ListView也需要放在LinearLayout中,并对其进行权重设置。 - Piyush
1
对于我的第一条评论? - Piyush
显示剩余3条评论
4个回答

1
你需要的是 RecyclerView,它可以帮助你实现。
                <android.support.v7.widget.RecyclerView
                    android:id="@+id/recyclerView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/white"
                    android:clipToPadding="false"/>

然后在代码中,您可以像这样设置水平方向。
mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
mRecyclerView.setLayoutManager(mLayoutManager);

您可以使用RecyclerView.Adapter将视图添加到其中。一切就绪 :)


0
对于水平滚动部分,使用被 HorizontalScrollView 包围的 LinearLayout,然后以编程方式添加每个内部 LinearLayout。
对于下面的部分,请使用自定义的 ListView。
我想那样做就可以了。

0
从你提供的图片来看,我认为不需要使用滚动视图,你需要的是这样的东西。
<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"
    android:orientation="vertical">

    <com.test.ui.HorizontialListView
        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">

        // add the layout for filter and sort by here

    </LinearLayout> 

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="1">
    </ListView>

</LinearLayout>

0

也许这会对你有所帮助

 <HorizontalScrollView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

// You can use your own code over here

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:src="@mipmap/ic_launcher" />

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:src="@mipmap/ic_launcher" />

        <ImageView
            android:id="@+id/imageView3"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:src="@mipmap/ic_launcher" />

        <ImageView
            android:id="@+id/imageView4"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:src="@mipmap/ic_launcher" />

        <ImageView
            android:id="@+id/imageView5"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:src="@mipmap/ic_launcher" />

        <ImageView
            android:id="@+id/imageView6"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:src="@mipmap/ic_launcher" />

    </LinearLayout>


</HorizontalScrollView>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接