Android - imageView.getDrawable() returns 空
Android - imageView.getDrawable() returns null
我被这个看似简单的问题卡住了。我做错了什么?
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);
}
应用程序在 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>
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"
/>
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>
请帮帮我!
您将 drawable 设置为 'src' 的 background
属性。
android:background="@drawable/clip"
。因此,通过将 background
属性替换为 src
:
来更改您的 activity_main.xml
android:src="@drawable/clip"
最后你的 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"
/>
或者您可以通过调用方法 getBackground()
来获取您的可绘制对象,其中 returns 可绘制对象是由属性 android:background
设置的
我被这个看似简单的问题卡住了。我做错了什么?
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);
}
应用程序在 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>
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"
/>
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>
请帮帮我!
您将 drawable 设置为 'src' 的 background
属性。
android:background="@drawable/clip"
。因此,通过将 background
属性替换为 src
:
activity_main.xml
android:src="@drawable/clip"
最后你的 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"
/>
或者您可以通过调用方法 getBackground()
来获取您的可绘制对象,其中 returns 可绘制对象是由属性 android:background