毕加索不会将可绘制图像加载到ImageView

时间:2019-02-21 11:47:29

标签: android android-layout picasso

Picasso无法将图像drawable加载到ImageView中,我尝试更改ImageView的宽度和高度,调整图像的大小,加载和不加载fit()resize()center(),并且图像仍然不可见。我在整个项目中都使用Picasso,并且在任何地方都可以正常工作,但是在这一项目上没有任何结果。

<?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"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mainFullFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/mainThemeBlack"
    tools:context=".MainTabsActivity">



    <RelativeLayout
        android:id="@+id/rlSynchroView"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:layout_alignParentBottom="true"
        android:background="@color/bottom_sheet_blue">
        <TextView
            android:id="@+id/tvSynchroLast"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="end"
            android:layout_marginEnd="10dp"
            android:textColor="@color/mdtp_white"
            android:text="Last synchro: 10:38"/>



        <ImageView
            android:id="@+id/ivSynchroIcon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/tvSynchroLast"
            android:elevation="5dp"/>
    </RelativeLayout>


    <android.support.v7.widget.RecyclerView
        android:id="@+id/listFullView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:dividerHeight="10.0sp"
        android:layout_above="@id/rlSynchroView"
        android:background="?android:attr/selectableItemBackground"
        android:divider="@color/mainThemeBlack"
        android:paddingBottom="70dp"
        android:clipToPadding="false">

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

方法调用:

Picasso.get().load(R.drawable.refresh_icon)
                .resize(10, 10)
                .into(refreshIV);

我正在onViewCreated()内部调用它,并且也尝试使用其他值来调整它的大小。

我想实现带有刷新图标的可点击底部栏(以及有关上次同步时间的信息),以使数据与onClick方法中的服务同步

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        mView = inflater.inflate(R.layout.list_full, container, false);

        refreshIV = mView.findViewById(R.id.ivSynchroIcon);

        mobileArray = new ArrayList<IssuePOJO>(); 
        dbStats.open();

        generateList();

        mView = view;
        return mView;

    }

5 个答案:

答案 0 :(得分:2)

您正在将其加载到错误的Imageview中。像这样更改代码

Picasso.get().load(R.drawable.refresh_icon).into(ivSynchroIcon);

如果您想看看出了什么问题,只需添加PIcasso回调

 Picasso.get()
            .load(R.drawable.refresh_icon)
            .into(ivSynchroIcon, new Callback() {
                @Override
                public void onSuccess() {
                }

                @Override
                public void onError(Exception e) {
                }
            })

答案 1 :(得分:1)

Picasso语法看起来正确,但是onCreateView方法逻辑似乎不正确

请尝试以下代码:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    mView = inflater.inflate(R.layout.list_full, container, false);

    refreshIV = mView.findViewById(R.id.ivSynchroIcon);

    mobileArray = new ArrayList<IssuePOJO>(); 
    dbStats.open();

    generateList();

    //mView = view;//please comment this one and try
    return mView;

}

答案 2 :(得分:0)

尝试此行

select tin.*, tout.out as next_out
from (select t.*,
             count(in) over (order by timestamp) as seqnum_in
      from t
     ) tin left join
      (select t.*,
             count(out) over (order by timestamp) as seqnum_out
      from t
     ) tout
     on tin.in is not null and
        tout.out is not null and
        tin.seqnum_in = tout.seqnum_out;

答案 3 :(得分:0)

由于您的资源中已经具有可绘制对象(refresh_icon),因此可以将其直接放置在布局中。

<ImageView
    android:id="@+id/ivSynchroIcon"
    android:layout_width="70dp"
    android:layout_height="70dp"
    android:padding="10dp"
    android:layout_below="@+id/tvSynchroLast"
    android:src="@drawable/refresh_icon"
    android:elevation="5dp"/>

如果仍然要使用Picasso,请尝试检查Layout Inspector中的ivSynchroIcon元素。 因此,您可以看到imageview的放置位置以及尺寸。 在Android Studio Tools -> Layout Inspector

答案 4 :(得分:-2)

毕加索遇到了这个问题,您应该尝试在可绘制对象中使用占位符

Picasso.get().load(R.drawable.refresh_icon)
            .resize(10, 10)
            .placeholder(R.drawable.refresh_icon)
            .into(refreshIV);