用两个图像视图填充横向模式的宽度

Posted

技术标签:

【中文标题】用两个图像视图填充横向模式的宽度【英文标题】:Fill the width in landscape mode with two imageviews 【发布时间】:2017-07-31 10:48:06 【问题描述】:

我有这个rec​​yclerview,背景是用imageviews制作的。我在纵向和横向中有这两种情况。如何用新的图像视图或相同颜色的东西填充那里的空白?

这是我的 xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_
android:layout_
android:orientation="horizontal">

<ImageView
    android:id="@+id/home_imageview_superbackground"
    android:layout_
    android:layout_
    android:layout_alignParentStart="true" />

<ImageView
    android:id="@+id/home_imageview_background"
    android:contentDescription="Background image"
    android:layout_
    android:layout_
    android:adjustViewBounds="true"
    android:layout_alignParentEnd="true" />

<RelativeLayout
    android:layout_
    android:layout_
    android:layout_centerVertical="true">

    <TextView
        android:id="@+id/content"
        android:layout_
        android:layout_
        android:fontFamily="casual"
        android:paddingBottom="10dp"
        android:paddingStart="5dp"
        android:paddingTop="10dp"
        android:textAppearance="?attr/textAppearanceListItem"
        android:textColor="@android:color/white"
        android:textSize="40sp" />
</RelativeLayout>

尝试了几种方法,但我就是无法完成这项工作。 @+id/home_imageview_superbackground 这是我想放在每个背景图像视图左侧的图像视图,以填充景观中的空间。谢谢你的帮助。

【问题讨论】:

【参考方案1】:

请试试这个

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_
    android:layout_
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/home_imageview_superbackground"
        android:layout_
        android:src="@mipmap/ic_launcher"
        android:scaleType="fitXY"
        android:layout_ />

    <ImageView
        android:id="@+id/home_imageview_background"
        android:layout_
        android:layout_
        android:src="@mipmap/ic_launcher"
        android:scaleType="fitXY"
        android:contentDescription="Background image" />

    <RelativeLayout
        android:layout_
        android:layout_
        android:layout_centerVertical="true">

        <TextView
            android:id="@+id/content"
            android:layout_
            android:layout_
            android:fontFamily="casual"
            android:paddingBottom="10dp"
            android:paddingTop="10dp"
            android:textAppearance="?attr/textAppearanceListItem"
            android:textColor="@android:color/white"
            android:textSize="40sp" />
    </RelativeLayout>
</RelativeLayout>

您也可以使用 android:scaleType="centerCrop"。

希望这对您有所帮助..如果您仍然遇到问题,请告诉我...

【讨论】:

【参考方案2】:
<ImageView
 android:layout_
 .... />

你也可以使用scaleTypeattribute

【讨论】:

对不起,伙计,但你甚至没有试图帮助我:) 对不起。创建景观变化布局。【参考方案3】:

首先,fill_parent 早已被弃用,您应该改用 match_parent。然后,您还必须在使用 ImagesView 时使用 scaleType 来定义图像在屏幕上的外观。在您的情况下,使用 scaleType = "fitXY" 可以解决您的问题。

你的代码应该是怎样的:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_
android:layout_>

<ImageView
    android:id="@+id/home_imageview_superbackground"
    android:layout_
    android:layout_
    android:scaleType="fitXY"
    android:layout_alignParentStart="true" />

<ImageView
    android:id="@+id/home_imageview_background"
    android:contentDescription="Background image"
    android:layout_
    android:layout_
    android:scaleType="fitXY"
    android:adjustViewBounds="true"
    android:layout_alignParentEnd="true" />

<RelativeLayout
    android:layout_
    android:layout_
    android:layout_centerVertical="true">

    <TextView
        android:id="@+id/content"
        android:layout_
        android:layout_
        android:fontFamily="casual"
        android:paddingBottom="10dp"
        android:paddingStart="5dp"
        android:paddingTop="10dp"
        android:textAppearance="?attr/textAppearanceListItem"
        android:textColor="@android:color/white"
        android:textSize="40sp" />
</RelativeLayout>

【讨论】:

谢谢,我会用match_parent修改我所有的fill_parent【参考方案4】:

试试这个代码

<?xml version="1.0" encoding="utf-8"?><?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_
    android:layout_
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/your_image"
        android:layout_
        android:layout_
        android:src="@mipmap/ic_launcher"
        android:scaleType="fitEnd"
        android:layout_alignParentStart="true"
        android:background="@drawable/green_gradiant"
        android:padding="10dp" />

    <TextView
        android:id="@+id/content"
        android:layout_
        android:layout_
        android:fontFamily="casual"
        android:paddingBottom="10dp"
        android:paddingStart="5dp"
        android:paddingTop="10dp"
        android:text="Hello Three"
        android:textAppearance="?attr/textAppearanceListItem"
        android:textColor="@android:color/white"
        android:textSize="40sp" />
</FrameLayout>

并创建这个可绘制文件

<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item>
     <shape android:shape="rectangle">
         <gradient android:angle="0"
             android:startColor="#64FFDA"
             android:centerColor="#4464FFDA"
             android:endColor="#0064FFDA"/>
     </shape>
 </item>
</selector>

【讨论】:

以上是关于用两个图像视图填充横向模式的宽度的主要内容,如果未能解决你的问题,请参考以下文章

具有纵向和横向图像视图的自动布局

使用自动布局更改方向时更改内容顺序

为啥图像视图会拉伸以填充 UIStackView 中宽度的一半?

横向模式下视频视图不是全屏

横向使用自动布局的 iOS 拉伸视图

从右横向直接更改为横向左