TextView未出现在模拟器和真实设备上

时间:2019-04-05 16:19:52

标签: android xml android-layout

这是设计在“预览”标签中的外观

enter image description here

但是当我在模拟器或真实设备上运行它时,有效期直到日期都没有出现。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.CardView
        android:id="@+id/card_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_margin="@dimen/card_margin"
        android:elevation="3dp"
        card_view:cardCornerRadius="@dimen/sell_item_radius">

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

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_marginTop="10dp"
                android:background="@android:color/holo_blue_light">

                <TextView
                    android:id="@+id/date"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="center"
                    android:text="@string/validUntil"
                    android:textColor="@color/colorPrimaryDark" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:layout_toRightOf="@+id/date"
                    android:text="date"
                    android:textColor="@color/colorPrimaryDark" />

            </RelativeLayout>

            <ImageView
                android:id="@+id/itemImage"
                android:layout_width="match_parent"
                android:layout_height="@dimen/sell_item_image_height"
                android:clickable="true"
                android:scaleType="fitXY"
                android:src="@drawable/ic_camera" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/itemImage"
                android:layout_alignParentRight="true"
                android:src="@drawable/ic_favourite" />

            <TextView
                android:id="@+id/imageCount"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_marginTop="5dp"
                android:layout_marginRight="10dp"
                android:text="@string/imageCount"
                android:textColor="@color/blue" />

            <TextView
                android:id="@+id/title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/itemImage"
                android:layout_marginTop="-3dp"
                android:paddingLeft="@dimen/sell_item_image_padding"
                android:paddingTop="@dimen/sell_item_image_padding"
                android:paddingRight="@dimen/sell_item_image_padding"
                android:text="@string/title"
                android:textColor="@color/blue"
                android:textSize="@dimen/sell_item_title" />

            <TextView
                android:id="@+id/price"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/title"
                android:layout_marginRight="10dp"
                android:paddingLeft="@dimen/sell_item_image_padding"
                android:paddingRight="@dimen/sell_item_image_padding"
                android:text="@string/price" />
        </RelativeLayout>

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

</LinearLayout>

谢谢

2 个答案:

答案 0 :(得分:3)

之所以看不到某些视图,是因为所有视图的宽度和高度均为wrap_content-因此,您创建了一个布局,可以根据视图的内容扩展视图(如果您会在600 dp的图像上添加200 dp,并将宽度和高度设置为wrap_content,这就是您的视图尺寸),即使在预览时,您也可以看到-视图彼此重叠。

因此您可以在视图中使用固定大小,但是这样做是为了进入危险区域-您的布局不会对所有屏幕尺寸都做出响应,这是因为不同的手机使用的尺寸不同屏幕尺寸以及一部手机上看起来不错的东西在另一部手机上看起来不好。


当然,您可以通过为每个屏幕尺寸创建单个布局来解决此问题,但这需要大量工作。

您还可以使用android:weightSumlayout_weight来定义相对布局

但是还有一个更好的选择:


您可以使用ConstraintLayout来实现可响应所有屏幕尺寸的单一布局,其所有视图层次都是平坦的(无嵌套视图组),并且使用起来真的很简单。

这里是一个布局示例,它看起来像您要使用ConstraintLayout一样:

<androidx.constraintlayout.widget.ConstraintLayout 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"
android:layout_width="match_parent"
android:layout_height="match_parent">


<TextView
    android:id="@+id/textView8"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:text="TextView"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textView10"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:text="TextView"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textView12"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginBottom="8dp"
    android:text="TextView"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

<TextView
    android:id="@+id/textView13"
    android:layout_width="0dp"
    android:layout_height="15dp"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginBottom="8dp"
    android:text="TextView"
    app:layout_constraintBottom_toTopOf="@+id/textView12"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

<TextView
    android:id="@+id/textView11"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:text="TextView"
    app:layout_constraintStart_toEndOf="@+id/textView10"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textView14"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginBottom="8dp"
    android:text="heart"
    app:layout_constraintBottom_toTopOf="@+id/textView13"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="@+id/textView8" />

<ImageView
    android:id="@+id/imageView3"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginBottom="8dp"
    android:scaleType="fitXY"
    app:layout_constraintBottom_toTopOf="@+id/textView14"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/textView8"
    tools:src="@tools:sample/avatars[11]" />
</androidx.constraintlayout.widget.ConstraintLayout>

这是纵向的样子:

enter image description here

风景:

enter image description here

答案 1 :(得分:0)

最后我解决了!我只是移动ID为imageView的{​​{1}},将其放置在第一个itemImage之后。