为什么图像不会在API 21上的ImageView中出现?

时间:2018-03-15 13:02:15

标签: java android

我尝试在API 21上插入图像并且不能正常工作,但在API 26上一切正常。 我的错误或错在哪里?

public class MainActivity extends AppCompatActivity {
ImageView img1,img2,img3,img4;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    img1 = (ImageView) findViewById(R.id.img1);
    img2 = (ImageView) findViewById(R.id.img2);
    img3 = (ImageView) findViewById(R.id.img3);
    img4 = (ImageView) findViewById(R.id.img4);

    //setResource
//        if(img1 != null) img1.setImageResource(R.drawable.china); //Вылетает

    //setDrawable
    if(img2 != null) `img2.setImageDrawable(Drawable.createFromPath("/res/drawable/tokyo1.png"));`

    //setBitmap
    if(img3 != null) img3.setImageBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.tokyo2));

    //Picasso(local)
    if(img4 != null) {
        Picasso.get()
                .load(R.drawable.china)
                .into(img4);
    }

    //Picasso(URI)
    if(img1 != null) {
        Picasso.get()
                .load("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTmG5K1tMdQ4W3G1WlZSfSWfL6jo8E9rS4NTHflXoT1CsF2Na_i")
                .into(img1);
    }
}
}

XML:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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"
    tools:context="com.example.kiril.imgtest4.MainActivity">

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

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

            <ImageView
                android:id="@+id/img1"
                android:layout_width="1dp"
                android:layout_height="150dp"
                android:layout_weight="1"
                android:background="@android:color/holo_orange_dark"/>
            <ImageView
                android:id="@+id/img2"
                android:layout_width="1dp"
                android:layout_height="150dp"
                android:layout_weight="1"       
                android:background="@android:color/holo_blue_light"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/img3"
                android:layout_width="1dp"
                android:layout_height="150dp"
                android:layout_weight="1"

                android:background="@android:color/holo_green_light"/>
            <ImageView
                android:id="@+id/img4"
                android:layout_width="1dp"
                android:layout_height="150dp"
                android:layout_weight="1"
                android:background="@android:color/holo_red_dark"/>
        </LinearLayout>
    </LinearLayout>

</android.support.constraint.ConstraintLayout>

2 个答案:

答案 0 :(得分:1)

问题在于您的xml文件中的layout_width tag

您正在指定layout_width size as 1 dp。使其足够大以在ImageView中显示图像

use layout_width="wrap_content"可正确显示图像,而无需调整图像宽度。

因此,最后只需将android:layout_width="1dp"替换为android:layout_width="wrap_content"android:layout_width="any size in dp"

希望这会有所帮助!!

答案 1 :(得分:0)

好的虽然我不知道你想在这里实现什么。我指出了一些步骤。根据方向,将单位Select * From clientProfil A Where (Select A.* for XML Raw) like '%'+@search+'%' 0dp一起使用。 所以你的布局应该是这样的。

layout_weight

您可以通过多种方式将图片设置为 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="150dp" android:orientation="horizontal"> <ImageView android:id="@+id/img1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <ImageView android:id="@+id/img2" android:layout_width="0dp" android:layout_height="150dp" android:layout_weight="1" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="150dp" android:orientation="horizontal"> <ImageView android:id="@+id/img3" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> <ImageView android:id="@+id/img4" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" /> </LinearLayout> </LinearLayout>

ImageView

如果您使用imageView.setImageResource(R.drawable.ic_launcher); imageView.setImageDrawable(ContextCompat.getDrawable(this,R.drawable.ic_launcher)); Picasso.with(context).load(R.drawable.ic_launcher).into(imageView); 设置图片,请在xml中使用android:scaleType属性。也无需检查src。另请阅读what-is-the-difference-between-src-and-background-of-imageview