如何在平板电脑和Android手机上调整不同高度的cardview?

时间:2017-12-07 18:08:58

标签: android android-layout xamarin.android android-cardview recyclerview-layout

我正在制作一个在recyclerview中有一个cardview的Android应用程序。 Cardview在平板电脑上看起来不错,屏幕尺寸为40%。当我在5英寸的Android设备上运行时,cardview覆盖80%的屏幕尺寸。请检查下面的代码,并提出一些解决方案,以根据屏幕尺寸自动调整布局。

MainLayout.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_linearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
  <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_alignParentBottom="false"
       android:layout_alignParentEnd="true"
       android:layout_below="@+id/empty_view"
       android:orientation="vertical">
    <SearchView
      android:id="@+id/searchbar"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
    />
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:scrollbars="vertical"
        android:clipToPadding="false"
        android:layout_height="0dp"
        android:layout_weight="1"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Load More"
        android:id="@+id/btnLoad"
        android:layout_gravity="center_horizontal"
        android:layout_below="@+id/recyclerview"
        android:background="#42a7f4" />
  </LinearLayout>
</LinearLayout>

CardViewTemplate.xml

<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_height="wrap_content"
    android:layout_width="match_parent">
  <android.support.v7.widget.CardView
      android:id="@+id/card_view"
      android:layout_gravity="start"
      android:layout_width="match_parent"
      card_view:cardUseCompatPadding="true"
      android:layout_height="500dp"
      android:layout_marginBottom="20dp"
      android:layout_marginLeft="20dp"
      android:layout_marginRight="20dp"
      android:layout_marginTop="10dp"
      card_view:contentPaddingLeft="5dp"
      card_view:contentPaddingRight="5dp"
      card_view:contentPaddingTop="5dp"
      card_view:cardCornerRadius="0dp">
    <RelativeLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent">
      <LinearLayout
          android:id="@+id/greenBoxView"
          android:background="#EBEFF2"
          android:layout_height="50dp"
          android:orientation="horizontal"
          android:layout_width="match_parent"
          android:layout_alignParentTop="true"
          >
         <ImageView
          android:layout_height="30dp"
          android:layout_width="30dp"
          android:layout_alignParentLeft="true"
                    android:layout_marginLeft="5dp"
          android:src="@drawable/lab"
          android:layout_gravity="center_vertical"
             />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Yay! This is a Sample Title Text"
            android:textColor="#002868"
            android:textStyle="bold"
            android:paddingRight="70dp"
            android:paddingLeft="60dp"

            android:textSize="25dp"
            android:layout_gravity="center_vertical" />
      <ImageView
          android:layout_height="30dp"
          android:layout_width="30dp"
          android:layout_alignParentRight="true"
          android:src="@drawable/lab"
          android:layout_marginRight="8dp"
          android:layout_gravity="center_vertical"
             />
      </LinearLayout>
      <LinearLayout
          android:layout_below="@id/greenBoxView"
          android:layout_above="@+id/footer"
          android:id="@+id/centeralPart"
          android:paddingTop="5dp"
          android:paddingLeft="5dp"
          android:paddingRight="5dp"
          android:layout_height="match_parent"
          android:layout_width="match_parent"
          android:gravity="center_horizontal"
          android:orientation="vertical">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="#000"
            android:textSize="20dp"
            android:id="@+id/txtMaintitle" />
        <TextView
            android:textColor="#0080ff"
            android:textSize="20dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/txtSecondTitle" />
        <ListView
            android:id="@+id/mainlist_view"
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:divider="@null"
            android:dividerHeight="0dp"/>
      </LinearLayout>
      <LinearLayout
          android:id="@id/footer"
          android:layout_height="80dp"
          android:layout_width="match_parent"
          android:layout_alignParentBottom="true"
          android:gravity="center_horizontal"
          android:orientation="horizontal">
        <Button
          android:id="@+id/btnOrder"
            android:layout_gravity="center_vertical"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="Order"
            android:background="#00AF50"
            android:textColor="#FFFFFF"
            android:layout_marginRight="10dp" />
        <Button
            android:id="@+id/btnCompare"
            android:layout_gravity="center_vertical"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="Compare"
            android:textColor="#FFFFFF"
            android:background="#0071C1" />
      </LinearLayout>
    </RelativeLayout>
  </android.support.v7.widget.CardView>
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

CardViewTemplate.xml应该是这样的:

<?xml version="1.0" encoding="utf-8" ?>
<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:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:ignore="HardcodedText,ContentDescription" >

    <android.support.v7.widget.CardView
        android:id="@+id/card_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="start"
        android:layout_marginBottom="20dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="10dp"
        card_view:cardCornerRadius="0dp"
        card_view:cardUseCompatPadding="true"
        card_view:contentPaddingLeft="5dp"
        card_view:contentPaddingRight="5dp"
        card_view:contentPaddingTop="5dp">

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

            <LinearLayout
                android:id="@+id/greenBoxView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#EBEFF2"
                android:orientation="horizontal">

                <ImageView
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:layout_gravity="center_vertical"
                    android:layout_marginStart="5dp"
                    android:src="@drawable/lab"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:paddingEnd="70dp"
                    android:paddingStart="60dp"
                    android:text="Yay! This is a Sample Title Text"
                    android:textColor="#002868"
                    android:textSize="25sp"
                    android:textStyle="bold" />

                <ImageView
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:layout_gravity="center_vertical"
                    android:layout_marginEnd="8dp"
                    android:src="@drawable/lab" />
            </LinearLayout>

            <LinearLayout
                android:id="@+id/centeralPart"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_above="@+id/footer"
                android:layout_below="@id/greenBoxView"
                android:gravity="center_horizontal"
                android:orientation="vertical"
                android:paddingLeft="5dp"
                android:paddingRight="5dp"
                android:paddingTop="5dp">

                <TextView
                    android:id="@+id/txtMaintitle"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textColor="#000"
                    android:textSize="20sp" />

                <TextView
                    android:id="@+id/txtSecondTitle"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textColor="#0080ff"
                    android:textSize="20sp" />

                <ListView
                    android:id="@+id/mainlist_view"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:divider="@null"
                    android:dividerHeight="0dp" />
            </LinearLayout>

            <LinearLayout
                android:id="@id/footer"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:gravity="center_horizontal"
                android:orientation="horizontal">

                <Button
                    android:id="@+id/btnOrder"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:layout_marginEnd="10dp"
                    android:background="#00AF50"
                    android:text="Order"
                    android:textColor="#FFFFFF" />

                <Button
                    android:id="@+id/btnCompare"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:background="#0071C1"
                    android:text="Compare"
                    android:textColor="#FFFFFF" />
            </LinearLayout>
        </RelativeLayout>
    </android.support.v7.widget.CardView>
</LinearLayout>

如果这不符合您的想法,请提供充气项目视图或布局图纸的屏幕截图。