指定Cardview的布局宽度以适合所有手机屏幕尺寸

时间:2018-12-06 02:33:08

标签: java android android-layout android-cardview screen-size

在这里需要一些建议!

基本上,我希望我的卡片视图像第二张照片一样,但不指定特定的宽度大小,因为指定特定的大小将导致布局与其他手机看起来不同。

我尝试过的事情:

1)尝试了wrap_content,但是卡片视图的大小将根据其中的内容而有所不同。有些会很长,直到它覆盖索引面板,然后有些会很短。另外,它绝对不是match_parent,因为索引面板将覆盖cardview。 wrapcontent

2)指定宽度的特定数字(315dp)。在我的实际手机上看起来不错,但在其他模拟器上却不然。 specified the width to 315dp

3)在我的卡片视图布局中添加了“ android:layout_toStartOf =” @ + id / recycler_search“ ,但没有任何效果。


也许我只能用手机演示一下,但这不是很有效,不是吗?

这样,有人知道我该如何克服?任何帮助是极大的赞赏!

这是我的代码:

卡片视图布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="315dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
app:cardCornerRadius="10dp"
app:cardBackgroundColor="#f5f0f0"
app:cardElevation="5dp">

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


<LinearLayout
    android:orientation="vertical"
    android:layout_weight="9"
    android:layout_width="0dp"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/keyword"
        android:layout_marginLeft="10dp"
        android:gravity="center_vertical|start"
        android:textAllCaps="true"
        android:textStyle="bold"
        android:textColor="#000000"
        android:textSize="15dp"
        android:text="Baggage Management Interface Device 
        (BMID) Testing 123"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

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

        <TextView
            android:id="@+id/codeHeader"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="5dp"
            android:gravity="center_vertical|start"
            android:textStyle="bold"
            android:textColor="#a8000000"
            android:text="Code:"
            android:textSize="13dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/acronym"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:gravity="center_vertical|start"
            android:textStyle="italic"
            android:textColor="#a8000000"
            android:text="GST"
            android:textSize="13dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>

    <!--<LinearLayout-->
        <!--android:layout_width="wrap_content"-->
        <!--android:layout_height="wrap_content">-->

        <!--<TextView-->
            <!--android:id="@+id/ruleHeader"-->
            <!--android:layout_marginLeft="10dp"-->
            <!--android:layout_marginTop="5dp"-->
            <!--android:gravity="center_vertical|start"-->
            <!--android:textStyle="bold"-->
            <!--android:textColor="#a8000000"-->
            <!--android:text="Desc:"-->
            <!--android:textSize="13dp"-->
            <!--android:layout_width="wrap_content"-->
            <!--android:layout_height="wrap_content" />-->

        <!--<TextView-->
            <!--android:id="@+id/description"-->
            <!--android:layout_marginLeft="5dp"-->
            <!--android:layout_marginTop="5dp"-->
            <!--android:gravity="center_vertical|start"-->
            <!--android:textColor="#a8000000"-->
            <!--android:text="If none are set then 'GST' is 
            set to NULL"-->
            <!--android:textSize="13dp"-->
            <!--android:maxLines="2"-->
            <!--android:layout_width="wrap_content"-->
            <!--android:layout_height="wrap_content" />-->

    <!--</LinearLayout>-->

    <!--<LinearLayout-->
        <!--android:layout_width="wrap_content"-->
        <!--android:layout_height="wrap_content">-->

    <!--<TextView-->
        <!--android:id="@+id/relatedKeyword"-->
        <!--android:layout_marginLeft="10dp"-->
        <!--android:layout_marginTop="5dp"-->
        <!--android:gravity="center_vertical|start"-->
        <!--android:textColor="#a8000000"-->
        <!--android:text="Related Keyword:"-->
        <!--android:textSize="12sp"-->
        <!--android:textStyle="bold"-->
        <!--android:layout_width="wrap_content"-->
        <!--android:layout_height="wrap_content" />-->

        <!--<TextView-->
            <!--android:id="@+id/relatedKeyword1"-->
            <!--android:clickable="true"-->
            <!--android:layout_marginLeft="5dp"-->
            <!--android:layout_marginTop="5dp"-->
            <!--android:textColor="#a8000000"-->
            <!--android:text="Keyword 1,"-->
            <!--android:textSize="12sp"-->
            <!--android:layout_width="wrap_content"-->
            <!--android:layout_height="wrap_content"/>-->

        <!--<TextView-->
            <!--android:id="@+id/relatedKeyword2"-->
            <!--android:clickable="true"-->
            <!--android:layout_marginLeft="5dp"-->
            <!--android:layout_marginTop="5dp"-->
            <!--android:textColor="#a8000000"-->
            <!--android:text="Keyword 2,"-->
            <!--android:textSize="12sp"-->
            <!--android:layout_width="wrap_content"-->
            <!--android:layout_height="wrap_content"/>-->

        <!--<TextView-->
            <!--android:id="@+id/relatedKeyword3"-->
            <!--android:clickable="true"-->
            <!--android:layout_marginLeft="5dp"-->
            <!--android:layout_marginTop="5dp"-->
            <!--android:textColor="#a8000000"-->
            <!--android:text="Keyword 3"-->
            <!--android:textSize="12sp"-->
            <!--android:layout_width="wrap_content"-->
            <!--android:layout_height="wrap_content"/>-->

    <!--</LinearLayout>-->


    <TextView
        android:id="@+id/tv_rules_read_more"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:textStyle="bold"
        android:textSize="14sp"
        android:clickable="true"
        android:padding="5dp"
        android:textColor="@android:color/holo_blue_dark"
        android:text="@string/read_more"/>


</LinearLayout>
</LinearLayout>


主要布局

<?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"
xmlns:tools="http://schemas.android.com/tools"
xmlns:fab="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".KnowledgeActivity"
android:background="@drawable/bokeh10"
android:id="@+id/drawerLayout">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
    <ImageView
        android:id="@+id/drawable_header"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:src="@drawable/bg_login"/>

    <com.mancj.materialsearchbar.MaterialSearchBar
        android:id="@+id/search_bar"
        android:layout_alignParentTop="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:mt_speechMode="false"
        app:mt_hint="Search" />

<in.myinnos.alphabetsindexfastscrollrecycler.IndexFastScrollRecyclerView
        android:id="@+id/recycler_search"
        android:layout_below="@+id/search_bar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:setIndexBarColor="#ffffff"
        app:setIndexBarTextColor="#000000"/>

</RelativeLayout>

<android.support.design.widget.NavigationView
    android:id="@+id/nvNavView"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    app:menu="@menu/navigation_menu"
    android:layout_gravity="start">
</android.support.design.widget.NavigationView>


修改:针对每个询问为什么不匹配的父母

这是它的样子!索引面板覆盖了卡视图的某些部分。您可能会说只是一点点,但是我有更多的卡片视图和更长的标题。

match parent

1 个答案:

答案 0 :(得分:0)

有人发布了一个解决方案,但我不知道为什么将其删除!我对他的代码进行了很少的更改,就遵循了他的解决方案,而我的问题得到了神奇的解决!

OP的解决方案是遵循此gitHub(https://github.com/intuit/sdp/tree/master/sdp-android/src/main/res),并将351dp更改为351sdp。

所以这是我为解决自己的担忧而采取的步骤。

  1. 在values文件夹下创建一个新的Value Resource File
  2. 将文件命名为positive_sdp
  3. 完全按照GitHub上的内容进行操作。 positive_sdp文件应包含您希望小部件,可绘制对象或其他任何对象的相关尺寸。因此,在我的positive_sdp xml文件中,我有以下这些内容:
<dimen name="_315sdp">315.00dp</dimen>
<dimen name="_80sdp">80.00dp</dimen>
<dimen name="_250sdp">250.00dp</dimen>
  1. 我照常保存了文件。
  2. 起初,我忘记将351dp更改为'dimen / _27sdp',但是当我在4种不同的手机(2个模拟器和2个实际的手机)上运行我的应用程序时,我意识到我的cardview宽度恰好在索引面板就像我想要的那样。但是,在此之前,如果我坚持使用351dp并在相同的4个仿真器上运行我的应用,那么cardview的宽度无处不在!
  3. 最后,我相信我的问题仅通过创建positive_sdp文件即可解决。

我希望每个人都能从中受益!