android – 使用XML Layout作为View Subclass的视图?

android – 使用XML Layout作为View Subclass的视图?,第1张

概述我觉得好像我曾经知道如何做到这一点,但我现在正在画一个空白.我有一个从View(Card)扩展的类,我用 XML编写了一个布局.我想要做的是将View of Card设置为构造函数中的XML View,因此我可以使用Card中的方法来设置TextViews等等.有什么建议?代码如下: Card.java: (我有View.inflate(context,R.layout.card_layout,n 我觉得好像我曾经知道如何做到这一点,但我现在正在画一个空白.我有一个从VIEw(Card)扩展的类,我用 XML编写了一个布局.我想要做的是将VIEw of Card设置为构造函数中的XML VIEw,因此我可以使用Card中的方法来设置TextVIEws等等.有什么建议?代码如下:

Card.java:
(我有VIEw.inflate(context,R.layout.card_layout,null);这是我想要做的一个例子,但它不起作用.我基本上希望该类成为VIEw的接口,并按顺序要做到这一点,我需要以某种方式将XML布局分配给VIEw.我是否使用了setContentVIEw(VIEw视图)这样的东西?VIEw类中没有这样的方法,但有类似的东西吗?)

public class Card extends VIEw {    TextVIEw tv;    public Card(Context context) {        super(context);        VIEw.inflate(context,null);        tv = (TextVIEw) findVIEwByID(R.ID.tv);    }    public Card(Context context,AttributeSet attrs,int defStyle) {        super(context,attrs,defStyle);        VIEw.inflate(context,AttributeSet attrs) {        super(context,attrs);        VIEw.inflate(context,null);        tv = (TextVIEw) findVIEwByID(R.ID.tv);    }    public voID setText(String text) {        tv.setText(text);    }}

card_layout.xml:

<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="336dp"    androID:layout_height="280dp"    androID:layout_gravity="center"    androID:background="@drawable/card_bg"    androID:orIEntation="vertical" >    <TextVIEw        androID:ID="@+ID/tv"        androID:layout_height="fill_parent"        androID:layout_wIDth="wrap_content"        androID:textSize="24dp"    /></linearLayout>
解决方法 当前的设置无法实现您想要做的事情.视图(或其直接子类)表示单个视图,它没有子视图的概念,您正在尝试执行的 *** 作. LayoutInflater不能与简单的VIEw一起使用,因为简单的VIEw类没有实际添加子项的方法(如addVIEw()方法).

另一方面,用于生成子代的正确类是VIEwGroup(或其中一个直接子类,如linearLayout,FrameLayout等),它通过提供addVIEw方法接受向其添加VIEws或其他VIEwGroups.最后你的班级应该是:

public class Card extends VIEwGroup {    TextVIEw tv;    public Card(Context context) {        super(context);        VIEw.inflate(context,this);        tv = (TextVIEw) findVIEwByID(R.ID.tv);    }    public Card(Context context,this);        tv = (TextVIEw) findVIEwByID(R.ID.tv);    }    public voID setText(String text) {        tv.setText(text);    }}

如果我记得你扩展VIEwGroup时必须覆盖onLayout,那么相反(并且由于你的布局文件),你应该看看扩展linearLayout并用xml布局替换带有merge标签的linearLayout.

总结

以上是内存溢出为你收集整理的android – 使用XML Layout作为View Subclass的视图?全部内容,希望文章能够帮你解决android – 使用XML Layout作为View Subclass的视图?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1136940.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存