RecyclerView 的 GridLayout 视图上的背景图片 android
Background image on the RecyclerView's GridLayout views android
这是我向 SO 提出的第一个问题。
我刚刚将 RecyclerView 与 CardView 的 GridManagerLayout 一起使用。现在这一切都与 CustomAdapter 和所有完美配合,但我想在这些 CardViews 后面设置一个背景图像,这样它就不会那么光秃秃的了。
现在我尝试使用它为 Fragment 设置背景图像,XML 包含 RecyclerView 的布局 (FrameLayout),然后尝试对 RecyclerView 本身进行同样的操作。
因为这似乎很棘手,所以尝试设置图像让我很难受。
有什么办法可以做到吗?
编辑:
持有 RecyclerView 的布局:
<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:background="@drawable/background"
tools:context="fragments.SpaceFlightFragment">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
片段中创建View的方法:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_spaceflight, container, false);
RecyclerView recyclerView = (RecyclerView)v.findViewById(R.id.recyclerView);
SpaceFlightAdapter spaceFlightAdapter = new SpaceFlightAdapter(missions);
recyclerView.setAdapter(spaceFlightAdapter);
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
return v;
}
现在我尝试将 XML 布局中的背景图像设置为所有标签、LinearLayout、FrameLayout 和 RecyclerView。
我也尝试过在 OnCreateView 方法中将图像动态添加到它们......仍然没有:/.
将所有内容包装到 LinearLayout 中并设置它的背景对我来说非常有用:
<LinearLayout android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_light">
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="4dp"
android:paddingBottom="8dp"
android:clipToPadding="false"/>
</FrameLayout>
</LinearLayout>
您也可以使用 FrameLayout 代替 LinearLayout。
我知道它应该按照您的方式工作,但是您可以通过在带有背景的 FrameLayout 中添加图像视图来尝试破解吗
<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:background="@drawable/background"
tools:context="fragments.SpaceFlightFragment">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
</LinearLayout>
找到答案了。是一个愚蠢的错误!一切都做对了,但图像有点大,没有创建。所以测试了一个较小的图像来尝试它并且它有效.....应该在询问之前尝试另一个图像。如果这是一个大问题,则期待 OutOfMemory 异常。感谢 david145 和 hars。
这是我向 SO 提出的第一个问题。
我刚刚将 RecyclerView 与 CardView 的 GridManagerLayout 一起使用。现在这一切都与 CustomAdapter 和所有完美配合,但我想在这些 CardViews 后面设置一个背景图像,这样它就不会那么光秃秃的了。
现在我尝试使用它为 Fragment 设置背景图像,XML 包含 RecyclerView 的布局 (FrameLayout),然后尝试对 RecyclerView 本身进行同样的操作。
因为这似乎很棘手,所以尝试设置图像让我很难受。
有什么办法可以做到吗?
编辑:
持有 RecyclerView 的布局:
<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:background="@drawable/background"
tools:context="fragments.SpaceFlightFragment">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
片段中创建View的方法:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_spaceflight, container, false);
RecyclerView recyclerView = (RecyclerView)v.findViewById(R.id.recyclerView);
SpaceFlightAdapter spaceFlightAdapter = new SpaceFlightAdapter(missions);
recyclerView.setAdapter(spaceFlightAdapter);
recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
return v;
}
现在我尝试将 XML 布局中的背景图像设置为所有标签、LinearLayout、FrameLayout 和 RecyclerView。
我也尝试过在 OnCreateView 方法中将图像动态添加到它们......仍然没有:/.
将所有内容包装到 LinearLayout 中并设置它的背景对我来说非常有用:
<LinearLayout android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_light">
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="4dp"
android:paddingBottom="8dp"
android:clipToPadding="false"/>
</FrameLayout>
</LinearLayout>
您也可以使用 FrameLayout 代替 LinearLayout。
我知道它应该按照您的方式工作,但是您可以通过在带有背景的 FrameLayout 中添加图像视图来尝试破解吗
<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:background="@drawable/background"
tools:context="fragments.SpaceFlightFragment">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
</LinearLayout>
找到答案了。是一个愚蠢的错误!一切都做对了,但图像有点大,没有创建。所以测试了一个较小的图像来尝试它并且它有效.....应该在询问之前尝试另一个图像。如果这是一个大问题,则期待 OutOfMemory 异常。感谢 david145 和 hars。