`
byandby
  • 浏览: 1697223 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 在Xml文件配置自定义View 需要注意

阅读更多
   不知道 大家有没有在XML文件配置自定义View的经验 就比如这样 。

  <xiaohang.zhimeng.TestView
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>


   那用过的朋友我不知道有没有遇见这样一个异常,我遇见2次了因为我就用过2次。到底是什么异常大家见下图!



  我想可能用过的朋友都会遇见这个异常。解决办法就是在我们自定义的构造方法里边少了一个这样的构造方法
public TestView(Context context, AttributeSet attr) {
		super(context, attr);
//至于这个构造函数里边要写一些什么大家就随便啦。
	}


  至于为什么需要这样一个构造方法,我也很郁闷不知道。 希望知道的高手,留言告诉一下吧,或者可以去我们的群里讨论。

  • 大小: 353.2 KB
分享到:
评论
4 楼 lwl139678 2011-11-20  
就稍微谈谈我个人的理解

在Android中,我们可以把View定义在XML中,就是楼说的


<xiaohang.zhimeng.TestView
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>

但是我们能把他定义在xml中的原因是这个View可以被解析,就像xml一样解析
在View里有一个这方法:
public View(Context context, AttributeSet attrs, int defStyle)
里面有一个
TypedArray a = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.View,
                defStyle, 0);

这个就是取出定义的View里面的双属性值

而报错的是这个方法:

    public View(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

调用是会调用

public View(Context context, AttributeSet attrs, int defStyle)

来解析
所以没有是系统会发生解析错误

3 楼 byandby 2010-12-02  
384444165 写道
这个应该可以解释 不过不是高手 呵呵
楼主看下api里面这两个:

View(Context context)
Simple constructor to use when creating a view from code.

View(Context context, AttributeSet attrs)
Constructor that is called when inflating a view from XML.

应该就晓得了吧 如果你直接在code里面实例化就不需要加后面的参数


感谢 你热心的 回答啊,解答了我的疑惑。 呵呵 自己学习太不注意,或者思考方式太狭隘了 ,呵呵。
2 楼 384444165 2010-12-02  
我觉得主要应该是xml里面的参数传入问题,直接实例化就不需要这个传入参数,所以……
super(context, attr); 
就把普通的样式参数处理了已经
1 楼 384444165 2010-12-02  
这个应该可以解释 不过不是高手 呵呵
楼主看下api里面这两个:

View(Context context)
Simple constructor to use when creating a view from code.

View(Context context, AttributeSet attrs)
Constructor that is called when inflating a view from XML.

应该就晓得了吧 如果你直接在code里面实例化就不需要加后面的参数

相关推荐

    通过xml文件自定义view的一个Demo

    本Demo以“通过xml文件自定义View”为主题,旨在演示如何利用XML布局文件来定义一个自定义的View,并在实际项目中进行使用。 首先,自定义View的基本步骤包括创建一个新的Java类,该类继承自Android的基础View类,...

    Android实现在xml文件中引用自定义View的方法分析

    今天,我们将探讨Android实现在xml文件中引用自定义View的方法,并分析自定义View的实现方法和相关注意事项。 Android实现在xml文件中引用自定义View的方法: 在xml文件中引用自定义View有多种方法,下面我们将...

    Android 自定义View视图

    2. **重写构造函数**:我们需要提供至少一个构造函数,以便在布局XML文件中使用自定义View时进行实例化。通常,我们会重写`CompassView(Context context)`和`CompassView(Context context, AttributeSet attrs)`这两...

    android 自定义view及自定义属性

    自定义属性是为了让自定义View更加灵活,能通过XML布局文件配置其外观和行为。Android提供了两种方式来定义自定义属性: 1. **使用 attrs.xml 文件**:在res/values目录下创建一个attrs.xml文件,声明自定义属性,...

    Android 自定义View实现水平温度计

    - 开发者可以在Android Studio中导入这个项目,通过查看源码了解实现细节,学习如何结合XML布局文件和Java代码创建自定义View。 - 运行项目后,可以在模拟器或真机上看到水平温度计的动态效果。 8. **注释**: -...

    android自定义view自定义buttonDemo

    首先,自定义View在Android开发中扮演着关键角色,它允许开发者超越系统提供的标准视图组件,创建出满足特定需求的复杂视图。自定义View通常包括以下步骤: 1. 创建一个新的Java类,继承自View或已有的View子类(如...

    android项目下对图片高斯模糊毛玻璃自定义view

    3. XML布局文件:包含自定义View的布局定义。 4. 示例图片:用于演示模糊和毛玻璃效果。 五、使用和优化 在实际应用中,需要注意性能优化。高斯模糊运算可能会消耗大量CPU资源,因此可以考虑以下策略: - 使用异步...

    android 自定义View界面大合集

    7. **自定义View与XML布局**:为了让自定义View易于在XML布局中使用,需要提供对应的构造函数和属性。`attr.xml`文件用于定义自定义属性,`LayoutInflater`用于实例化自定义View。 8. **自定义View的最佳实践**:...

    Android自定义view实现代码复用

    3. 自定义属性:为了使自定义View易于在XML布局文件中使用,我们需要定义一些自定义属性。这可以通过在res/values/attrs.xml文件中创建一个标签来完成。例如,为HZLoginView添加背景颜色、输入框样式等属性。 4. ...

    Android studio编写的自定义view

    为了使自定义View在XML布局文件中可使用,我们需要在res/values/目录下创建一个attrs.xml文件,定义自定义属性。这些属性可以在实例化自定义View时通过XML进行设置。例如,定义一个名为`lineColor`的属性: ```xml ...

    android 自定义View 两种方式

    在Android开发中,自定义View...总的来说,自定义View在Android开发中扮演着不可或缺的角色,它允许开发者根据项目需求打造独一无二的用户界面和交互体验。合理运用这两种创建方式,能够提高开发效率,使应用更具特色。

    Android 创建自定义View源码

    在Android开发中,创建自定义View是提升应用用户体验和实现独特设计的重要手段。自定义View允许开发者根据需求扩展系统默认的视图组件,或者构建完全原创的交互元素。本教程将深入探讨Android自定义View的源码实现...

    Android-PowerConsumptionRankingsBatteryView自定义一个电池View

    4. **属性绑定**:为了在XML布局文件中能够配置自定义View的属性,开发者可能使用了`attrs.xml`文件定义了自定义属性,然后在`PowerConsumptionRankingsBatteryView`中通过`TypedArray`获取并使用这些属性。...

    android自定义View实现SwitchView

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建具有独特功能和交互效果的组件。本篇文章将深入探讨如何实现一个类似原生`Switch`的自定义View,我们将其命名为`SwitchView`。 首先,...

    android开发随声音大小变化的自定义view

    - 在XML布局文件中,将自定义View包含进来,指定其宽度、高度以及其他属性。 7. 在Activity或Fragment中初始化并使用: - 在代码中找到自定义View并绑定到布局,然后设置音频监听器,将接收到的音频数据传递给...

    Android高级应用源码-自定义View实现折线图.rar

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的用户界面组件。这个"Android高级应用源码-自定义View实现折线图.rar"压缩包提供了一个实例,展示了如何从头开始构建一...

    android demo,自定义控件view,点击该自定义view,onclick随机生成数字

    编译并运行应用,确保自定义View在界面上正确显示。点击该View时,应该能看到随机数字的生成效果。 6. **调试与优化**: 在开发过程中,使用Logcat输出调试信息,帮助定位问题。同时,注意性能优化,避免在`...

    android 自定义view 圆形进度条

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的UI元素。本示例着重讲解如何实现一个圆形进度条,这个主题来自于xiaanming大神的源码改造,旨在帮助开发者理解并掌握...

    Android高手进阶之自定义View,自定义属性(带进度的圆形进度条)源码

    在Android中,我们可以为自定义View定义自己的XML属性,使得在布局文件中更容易配置和使用。这需要以下几个步骤: 1. 在res/values/attrs.xml文件中定义自定义属性,如`progressColor`(进度颜色)、`...

Global site tag (gtag.js) - Google Analytics