Android Recycvler视图布局在预览和实际布局之间不匹配

时间:2016-11-08 13:05:49

标签: android android-layout android-recyclerview

我正在完成我的毕业工作,在包括自定义工具栏(用于汉堡图标)和用NavigationView替换ListView for DrawerLayout菜单项之前,我对布局没有任何问题。这是来自AS的预览以及RecyclerView Preview in android studio

所需的预期结果

这是Android设备上的实际视图(LeTV X800 API21,如果重要的话) Actual view

正如您所看到的,连续项目之间的差距很大,我不知道问题的根源是什么。我正在使用一个xml包含框架容器的活动,其中加载了所需的布局。 fragment_car_cost.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/car_cost_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left"
android:orientation="vertical">

<Space
    android:layout_width="match_parent"
    android:layout_height="15dp"
    android:id="@+id/space"/>

<android.support.v7.widget.RecyclerView
    android:id="@+id/car_cost_entry_recycler_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"
    android:layout_below="@id/space"
    app:layoutManager="LinearLayoutManager"
    tools:listitem="@layout/item_car_cost">

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

<com.github.clans.fab.FloatingActionMenu
    android:id="@+id/car_cost_floating_action_menu"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    fab:menu_animationDelayPerItem="55"
    fab:menu_backgroundColor="@android:color/transparent"
    fab:menu_buttonSpacing="0dp"
    fab:menu_colorNormal="#da3c2f"
    fab:menu_colorPressed="#dc4b3f"
    fab:menu_colorRipple="#99d4d4d4"
    fab:menu_fab_label="Opcje"
    fab:menu_fab_size="normal"
    fab:menu_icon="@drawable/fab_add"
    fab:menu_labels_colorNormal="#333"
    fab:menu_labels_colorPressed="#444"
    fab:menu_labels_colorRipple="#66efecec"
    fab:menu_labels_cornerRadius="3dp"
    fab:menu_labels_ellipsize="none"
    fab:menu_labels_hideAnimation="@anim/fab_slide_out_to_right"
    fab:menu_labels_margin="0dp"
    fab:menu_labels_maxLines="-1"
    fab:menu_labels_padding="8dp"
    fab:menu_labels_position="left"
    fab:menu_labels_showAnimation="@anim/fab_slide_in_from_right"
    fab:menu_labels_showShadow="true"
    fab:menu_labels_singleLine="false"
    fab:menu_labels_textColor="#f2f1f1"
    fab:menu_labels_textSize="15sp"
    fab:menu_openDirection="up"
    fab:menu_shadowColor="#66aff198"
    fab:menu_shadowRadius="4dp"
    fab:menu_shadowXOffset="1dp"
    fab:menu_shadowYOffset="4dp"
    fab:menu_showShadow="true"
    android:layout_alignParentBottom="true"
    android:layout_alignStart="@+id/car_cost_entry_recycler_view">

    <com.github.clans.fab.FloatingActionButton
        android:id="@+id/btn_car_costs_add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_input_add"
        fab:fab_label="@string/add"
        fab:fab_size="mini" />

    <com.github.clans.fab.FloatingActionButton
        android:id="@+id/btn_car_costs_statistics"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_menu_my_calendar"
        fab:fab_label="@string/statistics"
        fab:fab_size="mini" />

    <com.github.clans.fab.FloatingActionButton
        android:id="@+id/btn_car_costs_charts"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/btn_dropdown"
        fab:fab_label="@string/charts"
        fab:fab_size="mini" />
</com.github.clans.fab.FloatingActionMenu>
</RelativeLayout>

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/layout_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <FrameLayout
        android:id="@+id/main_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/toolbar" />
</RelativeLayout>

<android.support.design.widget.NavigationView
    android:id="@+id/navigation_view"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="left"
    app:headerLayout="@layout/navigation_header"
    app:menu="@menu/menu_navigation" />


</android.support.v4.widget.DrawerLayout>

和回收商查看项目:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/car_cost_header"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="7sp"
android:orientation="horizontal"
android:weightSum="1">

<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/car_cost_entry_card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card_view:cardCornerRadius="2dp"
    card_view:cardElevation="4dp">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/cost_type_image_view"
            android:layout_width="75sp"
            android:layout_height="75sp"
            android:src="@android:drawable/ic_menu_today"
            android:longClickable="true"/>

        <TextView
            android:id="@+id/car_cost_entry_date_text_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/cost_type_image_view"
            android:text="17.08.2017 17:20"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/car_cost_entry_date_text_view"
            android:layout_toEndOf="@+id/cost_type_image_view"
            android:text="Typ: paliwo"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:id="@+id/car_cost_entry_type_text_view" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Koszt: 666,66zł"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_below="@+id/car_cost_entry_type_text_view"
            android:layout_toEndOf="@+id/cost_type_image_view"
            android:id="@+id/car_cost_entry_cost_text_view"/>

        <ImageView
            android:id="@+id/cost_details_image_view"
            android:layout_width="wrap_content"
            android:layout_height="40sp"
            android:src="@android:drawable/ic_menu_delete"
            android:clickable="true"
            android:layout_alignParentRight="true"
            />

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


</LinearLayout>

2 个答案:

答案 0 :(得分:1)

LinearLayout项目布局

中将您的主要wrap_content身高更改为RecyclerView
<LinearLayout ...
            ...
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ...
    ... >

答案 1 :(得分:0)

LinearLayoutRecyclerView项目行中无用。只需删除父LinearLayout并让CardView成为根元素即可。这样,代码就会变得更加优化并解决您的问题。