最近我花了一个多小时搞清楚我的xml出了什么问题...直到我意识到android xml中有两个不同的小部件:" view"和"查看"。两者都是正确的并且不一样,因为大写的View给了我关于classcastexception的错误,直到我把它改成小写...我们什么时候才使用这些?
编辑: 因此,为了在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时,我也找到了例如&#34; spacer widget&#34;:
<View
android:layout_weight="20"
android:layout_width="match_parent"
android:layout_height="0dp"/>
答案 0 :(得分:3)
View
引用android.view.View
,它是所有视图的超类。它本身并不能绘制任何东西,但通常用作间隔物。
view
引用任何View
,并且在您的案例中class
属性class="com.example.customui2.MainActivity$ArticleFragment$MyButton"
中提供了特定类。你也可以把它写成
<com.example.customui2.MainActivity.ArticleFragment.MyButton ...
(虽然Mike M.在评论中发布了链接,但我并不是100%肯定它确实适用于这样的内部课程,而且我没有在这里尝试开发环境)
答案 1 :(得分:2)
View
可能是指一个类,而view
是您为该类对象的实例选择的名称。