Android Studio中png图像的白色背景

时间:2019-09-19 21:33:49

标签: android kotlin

我正在尝试在RecyclerView上显示一些png图像,这些图像具有透明背景,但是在设备!!上运行时却显示白色背景。 我尝试添加

android:background="@android:color/transparent"

到ImageView,但仍然是白色

我用Picasso这样在ImageView上加载图像

Picasso.get()
            .load(newpath)
                .into(itemView.imgMCat)

这是包含RecyclerView的片段

<?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" xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
         android:background="@drawable/meskback"


             tools:context=".HomeFragment">

    <!-- TODO: Update blank fragment layout -->

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:weightSum="10">

        <Toolbar
                android:id="@+id/toolbar"
                android:background="@color/meskBlue"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:minHeight="?attr/actionBarSize"
                android:theme="?attr/actionBarTheme"
                android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                tools:targetApi="lollipop">

            <Button
                    android:layout_width="25dp"
                    android:layout_height="25dp"
                    android:layout_gravity="right"
                    android:layout_margin="7dp"
                    android:id="@+id/mapiconbtn"
                    android:background="@drawable/mapicon"
            />

        </Toolbar>

        <LinearLayout
                android:layout_weight="6"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
        android:orientation="vertical">


            <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:weightSum="10"
                    android:orientation="vertical">

                <RelativeLayout
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:id="@+id/mainActivityRelayout1"
                        android:paddingTop="10dp"
                        android:layout_weight="5">
                    <ImageView
                            android:layout_width="90dp"
                            android:layout_height="90dp"
                            tools:srcCompat="@drawable/logo"
                            android:id="@+id/logoimg"
                            android:contentDescription="@string/logoimgdes"
                            android:src="@drawable/logo"
                            android:layout_centerHorizontal="true"
                            android:layout_marginTop="12dp"
                    />
                </RelativeLayout>

                <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:orientation="vertical"
                        android:layout_weight="5"
                        android:weightSum="2">
                    <TextView
                            android:layout_width="match_parent"
                            android:layout_height="0dp"
                            android:textSize="22sp"
                            android:layout_weight="1"
                            android:textStyle="bold"
                            android:gravity="center"
                            android:textColor="@color/meskBlue"
                            android:text="@string/welcome"
                            android:textAlignment="center"/>
                    <TextView
                            android:layout_width="match_parent"
                            android:layout_height="0dp"
                            android:layout_weight="1"
                            android:textSize="20sp"
                            android:textStyle="bold"
                            android:gravity="center"
                            android:layout_marginTop="20dp"
                            android:text="@string/how_can_we_help_you"
                            android:textAlignment="center"/>

                    />
                </LinearLayout>

            </LinearLayout>
        </LinearLayout>

    <LinearLayout
            android:orientation="vertical"
            android:layout_weight="4"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        <android.support.v7.widget.RecyclerView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/McatRecylceView"/>

    </LinearLayout>

    </LinearLayout>


</FrameLayout>

这是包含ImageView的item_view.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:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_margin="10dp">


    <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="140dp">

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

            <ImageView
                    android:id="@+id/imgMCat"
                    android:layout_width="match_parent"
                    android:layout_height="80dp"
                    android:background="@android:color/transparent"
                    android:layout_centerInParent="true"
                    android:layout_marginTop="3dp" android:layout_marginStart="3dp"
                    android:layout_marginEnd="3dp" android:layout_marginBottom="3dp"/>
            <TextView
                    android:text="TextView"
                    android:id="@+id/mcategoryTitle"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@id/imgMCat"
                    android:textAlignment="center"/>

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

</LinearLayout>

这张设备照片

enter image description here

3 个答案:

答案 0 :(得分:0)

尝试

public partial class MyService : ServiceBase
{
    private readonly ILogger _log;

    public MyService()
        : this(Log.Logger)
    {
        InitializeComponent();
    }

    public MyService(ILogger logger) // <<<<<<<<<<<<<<<<<<<
    {
        InitializeComponent();

        if (logger == null) throw new ArgumentNullException(nameof(logger));
        _log = logger.ForContext<MyService>();
    }

    protected override void OnStart(string[] args)
    {
        _log.Information("Service starting...");
        // ...

        _log.Information("Service started.");
    }

    protected override void OnStop()
    {
        _log.Information("Service stopping...");
        // ...

        _log.Information("Service stopped.");
    }
}

答案 1 :(得分:0)

图像加载没有问题,您需要设置高度和宽度以包装内容,而不是具有固定的宽度和匹配的父高度,这是您应该在xml中执行的操作

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

        <ImageView
                android:id="@+id/imgMCat"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/transparent"
                android:layout_centerInParent="true"
                android:layout_marginTop="3dp" android:layout_marginStart="3dp"
                android:layout_marginEnd="3dp" android:layout_marginBottom="3dp"/>
        <TextView
                android:text="TextView"
                android:id="@+id/mcategoryTitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/imgMCat"
                android:textAlignment="center"/>

    </RelativeLayout>

通过将主布局设置为所需的大小,然后设置imageview来包装png的内容,您将解决问题

但是,我建议您永远不要对任何UI组件使用固定大小,因为屏幕尺寸不同的设备数量也不同,如果您使用固定尺寸的UI元素,那么它肯定会在1个屏幕上损坏,或者其他

答案 2 :(得分:0)

我在这里找到了答案,问题出在CardView https://stackoverflow.com/a/45769769/2209611

我添加了这些属性并解决了问题

app:cardBackgroundColor="@android:color/transparent"
        app:cardElevation="0dp"