2011-05-19 47 views
1

我试图在我的XML布局文件中覆盖特定ImageView的默认绘图。Android:OnDraw并将该类与xml中的ImageView相关联

所有的例子,我见过在活动中使用setContentView。我想单独离开主内容视图,只处理一个图像控件的图形。我在如何将imageview的id与新的实例化类关联以处理OnDraw时遇到了困难。

我可能会很反感这个,所以任何帮助表示赞赏。

如下:

littleImage = (ImageView) findViewById(R.id.myImageView); 

View myView = new MyCustomView(littleImage.getContext()); 

// NO! NO! I want to leave the 'main' view alone 
//setContentView(myView); 

public void test() 
{ 
    littleImage.invalidate(); 
} 

布局

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    > 
    <TextView android:id="@+id/label_title" 
     android:layout_width="320dip" 
     android:layout_height="wrap_content" 
     android:text="@string/app_name" 
     android:textSize="20sp" 
     android:gravity="center_horizontal" 
     android:background="#6B8AAD" 
    /> 
    <ImageView 
     android:id="@+id/image" 
     android:clickable="false" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:scaleType="fitCenter" 
    /> 
    <ImageView 
     android:id="@+id/myImageView" 
     android:clickable="false" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:scaleType="fitCenter" 
     android:visibility="invisible" 
    /> 
</LinearLayout> 

正如你看到的,我已经试过了imageViews的getContext,但这并没有帮助。 我怎样才能得到这个触发OnDraw?

回答

0

实现这一目标的最佳方式是通过创建一个类LittleImage扩展ImageView的

public class LittleImage extends ImageView 
{ 
    public LittleImage(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
    } 
    @Override 
    public void onDraw(Canvas canvas) 
    { 
     // Do you custom drawing here... 
    } 
} 

比,在你的XML布局,可以使用:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent"> 
    <TextView android:id="@+id/label_title" 
     android:layout_width="320dip" 
     android:layout_height="wrap_content" 
     android:text="@string/app_name" 
     android:textSize="20sp" 
     android:gravity="center_horizontal" 
     android:background="#6B8AAD"/> 
    <ImageView 
     android:id="@+id/image" 
     android:clickable="false" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:scaleType="fitCenter" 
    /> 
    <com.yourpackage.LittleImage 
     android:id="@+id/myImageView" 
     android:clickable="false" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:scaleType="fitCenter" 
     android:visibility="invisible" 
    /> 
</LinearLayout> 
+0

这是否解决问题了吗? – Entreco 2011-10-22 14:48:30

相关问题