Android-如何通过XML制定view?
问题是这样的:我已经设计了一个xml布局,我想把这个布局作为一个自定义view使用,比如可以设置指定的属性等。网上自定义view我看了,需要重写onDraw(),使用canvas来绘制。但是我这个xml布局里面都是控件,如何画?那如果不用自定义view,该如何实现这个功能?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
第一,可以继承自view,重写view的public MyView(Context context, AttributeSet attrs) 构造方法(如果想在xml中使用,这一步必须)。在这一步中,你可以用LayoutInflate的inflate方法来加载布局。
(扩展)但是有一个需要注意的问题是,如果你想把你的代码封装成jar包来使用的话,inflate的要拿到的xml布局文件的id要么通过反射从你的工程的R.java(R.class)文件来取得(还要在代码混淆中过滤掉这一个),同时把xml文件加到项目中的res文件夹中去。要么就是把xml文件也包含到你的jar包中,然后以字节流来解析。
第二种方法,如果只是自定义了布局,而没有逻辑代码的话,可以不写JAVA代码,而在需要引用到这个xml布局的布局文件用include标签。
我不清楚楼主这样做的原因什么,但是我自己习惯就是把一些对布局文件的操作写到一个layout里面。activity看起来就不会那么乱了。其实和加载view一样。比如说我现在写一个class Myview 继承LinearLayout;
需要加实现构造。
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
init()就是你加载你说的xml做的事情了,你可以通过
View view = LayoutInflater.from(context).inflate(R.layout.player, null);
得到,后面 addView()就可以了,view你已经得到了要得到里面的控件或执行相应的操作你简单了。
希望对你有帮助。