Android中自定义View的研究 -- 在XML中引用自定义View
生活随笔
收集整理的這篇文章主要介紹了
Android中自定义View的研究 -- 在XML中引用自定义View
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果在一直使用SetContentView(new HellwView(this)覺得總是少了一點東西,少了什么了,失去了Android中使用XML定義組件的便攜性,這種感覺讓人很不爽,呵呵,在這節里我們會看到一個自定義View報錯的解決方法,讓我們來看看在XML中定義View吧
修改MainActivity
我們發現,竟然報錯了,我們在LogCat里查看下: 11-24 10:58:38.993:ERROR/AndroidRuntime(323): Caused by:java.lang.NoSuchMethodException: HelloView(Context,AttributeSet) 竟然是沒有HelloView(Context,AttributeSet)這個構造器,結局方法呼之欲出了,呵呵。
運行:
關于這個解決方法網上有類似的問題:為什么非得加上這個方法,其實這個方法是作為系統解析XML中定義的屬性時作為回調方法用的。
運行結果與上面一樣
-
在XML中定義View的一個小錯誤
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?xml version="1.0" encoding="utf-8"?> ??? <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ??? ????android:orientation="vertical" ??? ????android:layout_width="fill_parent" ??? ????android:layout_height="fill_parent" ??? ????> ??? <TextView ??? ????android:layout_width="fill_parent" ??? ????android:layout_height="wrap_content" ??? ????android:text="@string/hello" ??? ????/> ??? ????<com.fxhy.stady.HelloView ??? ????android:layout_width="fill_parent" ??? ????android:layout_height="wrap_content" ??? ????/> </LinearLayout> |
super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.main);// 使用自定義的View 運行:我們發現,竟然報錯了,我們在LogCat里查看下: 11-24 10:58:38.993:ERROR/AndroidRuntime(323): Caused by:java.lang.NoSuchMethodException: HelloView(Context,AttributeSet) 竟然是沒有HelloView(Context,AttributeSet)這個構造器,結局方法呼之欲出了,呵呵。
-
解決方法
| 1 2 3 4 5 6 7 8 9 10 | ??/** ??? ?????* 這個是我們要在XML中初始化用的 ??? ?????* */ ??? ????public HelloView(Context context,AttributeSet attrs){ ??? ???????super(context, attrs); } |
關于這個解決方法網上有類似的問題:為什么非得加上這個方法,其實這個方法是作為系統解析XML中定義的屬性時作為回調方法用的。
-
另一中在XML中引用自定義View的方法
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?xml version="1.0" encoding="utf-8"?> ??? <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ??? ????android:orientation="vertical" ??? ????android:layout_width="fill_parent" ??? ????android:layout_height="fill_parent" ??? ????> ??? <TextView ??? ????android:layout_width="fill_parent" ??? ????android:layout_height="wrap_content" ??? ????android:text="@string/hello" ??? ????/> ??? ????<view class="com.fxhy.stady.HelloView" ??? ????android:layout_width="fill_parent" ??? ????android:layout_height="wrap_content" ??? ????/> </LinearLayout> |
總結
以上是生活随笔為你收集整理的Android中自定义View的研究 -- 在XML中引用自定义View的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 在xml文件中引用自定义
- 下一篇: Android app按三层架构+MVC