2014-07-17 78 views
-1

最近我花了一個多小時弄清楚我的xml有什麼問題......直到我意識到在android xml中有兩個不同的小部件:「view」和「View」。兩者都是正確的,並不相同,因爲大寫的視圖給我錯誤的classcastexception,直到我把它改爲小寫...我們什麼時候使用這些?在android xml中小寫和大寫「視圖」有什麼區別?

編輯: 所以,爲了創建Android的XML現有部件的修改版本,我不得不使用小寫的 「視圖」:

<view 
    android:id="@+id/mybutton1" 
    android:scaleType="fitXY" 
    android:adjustViewBounds="true" 
    android:layout_width="wrap_content" 
    android:layout_height="0dp" 
    android:layout_weight="75" 
    class="com.example.customui2.MainActivity$ArticleFragment$MyButton" 
    android:contentDescription="@string/logo_desc" 
    android:src="@drawable/menu_button" /> 

附加到Widget類:

public static class MyButton extends ImageView 
     { 

      public MyButton(Context context, AttributeSet attrs) { 
       super(context, attrs); 

      } 

     }; 

當使用大寫視圖時,我在這樣的行中有例外:

MyButton button1 = (MyButton) rootView.findViewById(R.id.mybutton1); 

,但我也發現實例時大寫的觀點是在「間隔部件」使用,如:

<View 
    android:layout_weight="20" 
    android:layout_width="match_parent" 
    android:layout_height="0dp"/> 
+0

很難回答,如果你沒有發佈你的xml –

+0

當使用''時,你有'ClassCastException'?這有點奇怪,你應該使用大寫字母。 –

+0

抱歉不要在第一時間發佈代碼。我認爲這是一個相當明顯的問題,不值得張貼代碼,但現在它在那裏! – Savail

回答

2

View可能是指一類,而view是你的這個類的一個對象的情況下所選擇的名稱。

+0

對不起,但我仍不明白爲什麼它會拋出我classcastexception,如果我在我的例子中使用大寫而不是小寫 – Savail

3

View指的是android.view.View,它是所有視圖的超類。它本身不會畫任何東西,但通常用作間隔物。

view指的是任何View,具體類別在class屬性中給出class="com.example.customui2.MainActivity$ArticleFragment$MyButton"在您的情況。你還可以這樣寫它作爲

<com.example.customui2.MainActivity.ArticleFragment.MyButton ... 

(雖然與鏈接麥克·M.張貼在我不是100%的意見一定真的作品與內部類這樣的,我沒有一個開發環境在這裏試試吧)

+0

出於好奇,你見過''使用?這是我聽到的第一個(或者是很久以前,我已經忘記了它)。回想起來,儘管如此,我並不感到驚訝。 – CommonsWare

+1

@CommonsWare這很少見,但我記得在爲客戶提供諮詢的同時,在實際的代碼庫中看到了 laalto

+1

@CommonsWare它顯示在這裏的自定義組件示例中:http://developer.android.com/guide/topics/ui/custom-components.html#modifying –

相關問題