我的应用需要扩展ImageView的高度和宽度。我认为这应该有效:
package my.android.test;
public class TestImageView extends ImageView
{
private int mWidth=0;
private int mHeight=0;
public TestImageView(Context context, AttributeSet as)
{
super(context, as);
final String xmlns="http://schemas.android.com/apk/res/android";
mWidth = as.getAttributeIntValue(xmlns, "layout_width", 0);
mHeight = as.getAttributeIntValue(xmlns, "layout_height", 0);
}
@Override
protected void onDraw(Canvas canvas)
{
//do stuff
}
}
但它不起作用。 getAttributeIntValue()返回0,尽管布局XML中定义了layout_height:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:background="#fffcb95a"
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
<FrameLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="6dip"
<my.android.test.TestImageView
android:id="@+id/TestImageViewID"
android:layout_width="100dip"
android:layout_height="100dip"
android:src="@drawable/icon"
android:scaleType="centerCrop" />
</RelativeLayout
</FrameLayout
</LinearLayout
</ScrollView
该怎么办?
答案 0 :(得分:2)
请注意原始尝试不起作用的原因 - layout_width和layout_height实际上不包含整数,它们是保持尺寸。您需要通过Context / Theme.obtainStyledAttributes检索这些内容,这样您就可以将它们作为可以转换为像素的TypedValue来获取。
答案 1 :(得分:1)
只需致电getWidth()
和getHeight()
。