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的视图?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)