相关疑难解决方法(0)

高架RecyclerView项目逐渐变形(高程变化)

任何想法为什么RecyclerView项目变形,每个连续项目变得更糟?

更新:我正在使用CardViews,现在没有视图"变形",但阴影/海拔高度会发生变化.

看起来根据项目垂直位于屏幕上的位置,高程会变高,当项目向下滚动时阴影会增大.请在此处观看视频:https://youtu.be/nROYq8rpUMs.

我已经建立了一个新项目,只留下展示问题所需的代码:

MainActivity.java

package tzig.schm00.masterdetail;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;


import tzig.schm00.masterdetail.dummy.DummyContent;

import java.util.List;

public class MainActivity extends AppCompatActivity {

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

        View recyclerView = findViewById(R.id.item_list);
        setupRecyclerView((RecyclerView) recyclerView);

    }

    private void setupRecyclerView(@NonNull RecyclerView recyclerView) {
        recyclerView.setAdapter(new SimpleItemRecyclerViewAdapter(DummyContent.ITEMS));
    }

    public class SimpleItemRecyclerViewAdapter
            extends RecyclerView.Adapter<SimpleItemRecyclerViewAdapter.ViewHolder> {

        private final List<DummyContent.DummyItem> mValues;

        public SimpleItemRecyclerViewAdapter(List<DummyContent.DummyItem> items) {
            mValues = items;
        }

        @Override …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-cardview android-elevation android-recyclerview

6
推荐指数
1
解决办法
1400
查看次数

Android海拔-相同的值不同的阴影

我在回收器视图中设置项目标高时遇到了一个奇怪的错误。我在适配器中有两种项目类型,第一种是一种具有复杂布局的仪表板,具有三个cardview。第二个是数据列表的经典项目,其中每个项目都以卡片视图作为根。两种布局中的每个卡片视图定义如下

第一个项目类型:

<LinearLayout
        android:id="@+id/root"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="4dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginBottom="8dp"
            app:cardCornerRadius="2dp"
            app:cardElevation="3dp"
            >

        ....

    </android.support.v7.widget.CardView>

    ....

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

第二个项目类型:

<android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        app:cardCornerRadius="2dp"
        app:cardElevation="3dp"
        >

    ....

</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,两个Cardview都具有相同的标高设置,但是当我部署此布局时,它们具有不同的阴影,知道这可能是什么原因吗?

我切割了屏幕的一部分并将切口彼此相邻放置,以便您可以看到问题...... 在此输入图像描述

编辑

第一个项目的布局非常复杂,但该项目类型中的所有三个CardView都具有相同的阴影(上图中左侧的阴影)。第二种项目类型的根卡片视图具有图像右侧的阴影。

default_elevation = 3dp 
default_corner_radius = 2dp
margins are 16dp, 8dp, 4dp etc ...
Run Code Online (Sandbox Code Playgroud)

第一个项目类型:

<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <LinearLayout
        android:id="@+id/root"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/margin_and_half"
            android:layout_marginLeft="@dimen/default_padding"/>

        <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/margin_quarter"
            android:layout_marginLeft="@dimen/margin_half"
            android:layout_marginRight="@dimen/margin_half"
            android:layout_marginBottom="@dimen/margin_half"
            app:cardCornerRadius="@dimen/default_corner_radius" …
Run Code Online (Sandbox Code Playgroud)

android shadow android-cardview android-elevation android-recyclerview

4
推荐指数
1
解决办法
1690
查看次数