2012-10-16 125 views
0

我想我的自定義ImageView添加到XML佈局。Android的自定義組件佈局

的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" > 

    <com.android.gag.TouchImageView 
     android:id="@+id/Image1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="center" 
     android:adjustViewBounds="true" 
     android:clickable="true" 
     android:scaleType="center" /> 

    <ImageButton 
     android:id="@+id/imageButton1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" /> 

</RelativeLayout> 

TouchImageView,正如它的名字所暗示的,extendsImageView類。

Main.java

touchImageView = (TouchImageView)findViewById(R.id.Image1);

我的應用程序崩潰。 logcat的輸出:

10-16 20:38:20.275: E/AndroidRuntime(11354): FATAL EXCEPTION: main 
10-16 20:38:20.275: E/AndroidRuntime(11354): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.gag/com.android.gag.Main}: android.view.InflateException: Binary XML file line #6: Error inflating class com.android.gag.TouchImageView 
10-16 20:38:20.275: E/AndroidRuntime(11354): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970) 
idRuntime(11354): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class com.android.gag.TouchImageView 
10-16 20:38:20.275: E/AndroidRuntime(11354): at android.view.LayoutInflater.createView(LayoutInflater.java:589) 
10-16 20:38:20.275: E/AndroidRuntime(11354): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680) 

請,任何人都可以幫助我嗎? 我是初學者,所以像'replace "class library" with "Android library project"'這樣的答案是毫無意義的,因爲它們太模糊,我不知道從哪裏開始以及去哪裏。

編輯:鏈接到我的TouchImageView class

+1

請你說明你的TouchImageView的實現。 – Daniel

+0

https://dl.dropbox.com/u/43107774/TouchImageView.java – Teo

+0

當您錯誤地重寫ImageView的方法時,通常會發生此問題。 – Daniel

回答

2

代碼爲您的自定義視圖類缺少兩個構造函數。從Android docs for the View class

View(Context context, AttributeSet attrs) 

構造充氣從XML的視圖時調用。

View(Context context, AttributeSet attrs, int defStyle) 

從XML執行通貨膨脹並應用特定於類的基本樣式。

它崩潰,因爲它無法找到它所需要的構造函數,所以它不能膨脹的觀點。

您TouchImageView類實現這兩個構造,看看問題是否會消失。