Android - imageView.getDrawable()返回null

use*_*702 4 android android-imageview android-drawable

我坚持这个看似简单的问题.我究竟做错了什么 ?

ImageView mImageView;

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

        mImageView = (ImageView)findViewById(R.id.control);
        ClipDrawable drawable = (ClipDrawable)mImageView.getDrawable();
        drawable.setLevel(10);

    }
Run Code Online (Sandbox Code Playgroud)

应用程序在drawable.setLevel(10)崩溃时出现NullPointerException(drawable为null).

这是我的xml:

circle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    android:innerRadius="50dp"
    >

    <solid
        android:color="#FFAAFF"/>

</shape>
Run Code Online (Sandbox Code Playgroud)

clip.xml

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:clipOrientation="horizontal"
    android:drawable="@drawable/circle"
    android:gravity="clip_horizontal"

/>
Run Code Online (Sandbox Code Playgroud)

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <ImageView
        android:id="@+id/image"
        android:layout_height="100dp"
        android:layout_width="100dp"
        android:background="@drawable/clip"
        android:layout_centerHorizontal="true"
        />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

请帮帮我吧!

moh*_*hax 15

您将drawable设置background为'src'的属性.

机器人:背景="@绘制/夹子"

.所以activity_main.xml通过将background属性替换为src:来改变你的:

机器人:SRC = "@绘制/夹子"

最后你的activity_main.xml将是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

<ImageView
    android:id="@+id/image"
    android:layout_height="100dp"
    android:layout_width="100dp"
    android:scr="@drawable/clip"
    android:layout_centerHorizontal="true"
    />
Run Code Online (Sandbox Code Playgroud)


或者你可以通过调用getBackground()返回属性设置的drawable的方法来获取你的drawableandroid:background