Android:来自xml布局的自定义视图

Android:来自xml布局的自定义视图,第1张

概述我想创建一个自定义View(View类的子类)并使用布局xml资源. 我想要这样的东西: public class CustomView extends LinearLayout { public CustomView(Context context) { super(context); LayoutInflater mInflater = (L 我想创建一个自定义view(VIEw类的子类)并使用布局xml资源.

我想要这样的东西:

public class CustomVIEw extends linearLayout {    public CustomVIEw(Context context) {          super(context);          LayoutInflater  mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);          mInflater.inflate(R.layout.tweet,this,true);}

这实际上创建了一个具有正确高度和宽度的视图(ScrollVIEw及其列表具有完全预期的长度和滚动条)但它们是空的(黑色),即使xml布局包含大量TextVIEw.

这是我的xml布局:

<?xml version="1.0" enCoding="utf-8"?><linearLayout    xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:ID="@+ID/tweet"    androID:layout_wIDth="match_parent"     androID:layout_height="match_parent"     androID:orIEntation="vertical"    androID:background="#ffffff">    <relativeLayout        androID:layout_height="wrap_content"        androID:layout_wIDth="match_parent">        <linearLayout             androID:layout_height="wrap_content"             androID:layout_wIDth="match_parent"             androID:orIEntation="horizontal"            androID:background="#ffffff">            <TextVIEw                 androID:text="User"                 androID:ID="@+ID/tvusername"                 androID:layout_wIDth="wrap_content"                 androID:layout_height="wrap_content"                androID:textcolor="#000000"                androID:textStyle="bold">            </TextVIEw>            <VIEw                androID:layout_wIDth="5dip"                androID:layout_height="1dip">                       </VIEw>            <TextVIEw                 androID:text="userscreenname"                 androID:ID="@+ID/tvuserscreenname"                 androID:layout_wIDth="wrap_content"                 androID:layout_height="wrap_content">            </TextVIEw>            </linearLayout>        <TextVIEw            androID:text="0s"            androID:ID="@+ID/tvtime"            androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content"            androID:layout_alignParentRight="true">        </TextVIEw>    </relativeLayout>    <TextVIEw         androID:text="Tweet Content"         androID:ID="@+ID/tvcontent"         androID:layout_wIDth="match_parent"         androID:layout_height="wrap_content"        androID:textcolor="#000000">    </TextVIEw>    <VIEw         androID:layout_wIDth="match_parent"        androID:layout_height="1px"        androID:background="#ffffff">    </VIEw>    <TextVIEw         androID:text="Retweet by"         androID:ID="@+ID/tvrtby"         androID:layout_wIDth="wrap_content"         androID:layout_height="wrap_content">    </TextVIEw></linearLayout>

这是我的主要布局:

<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:orIEntation="vertical"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:background="#ffffff"    ><ScrollVIEw     androID:layout_height="match_parent"     androID:layout_wIDth="match_parent"     androID:ID="@+ID/scrollVIEw1"     androID:orIEntation="vertical"   androID:layout_alignParenttop="true">    <linearLayout         androID:layout_wIDth="match_parent"         androID:ID="@+ID/timeline"         androID:layout_height="wrap_content"        androID:orIEntation="vertical"        androID:background="#ffffff">                       <TextVIEw              androID:ID="@+ID/tvoutput"            androID:layout_wIDth="match_parent"             androID:layout_height="wrap_content"             androID:text="@string/hello"            />        </linearLayout></ScrollVIEw></linearLayout>

这是我将自定义视图添加到主视图的方式:

不工作(我试图实现):

TweetVIEw ctweet = new TweetVIEw(getApplicationContext(),tweet);timeline.addVIEw(ctweet);

我当前的解决方案(有效,但不使用自定义视图):

VIEw vtweet = VIEw.inflate(getApplicationContext(),R.layout.tweet,null);            TextVIEw tvusername = (TextVIEw) vtweet.findVIEwByID(R.ID.tvusername);            TextVIEw tvuserscreenname = (TextVIEw) vtweet.findVIEwByID(R.ID.tvuserscreenname);            TextVIEw tvcontent = (TextVIEw) vtweet.findVIEwByID(R.ID.tvcontent);            TextVIEw tvtime = (TextVIEw) vtweet.findVIEwByID(R.ID.tvtime);            tvusername.setText(tweet.getUser().getname());            tvuserscreenname.setText('@' + tweet.getUser().getScreenname());            tvcontent.setText(tweet.getText());             //tvtime.setText(ctweet.tvtime.getText());             timeline.addVIEw(vtweet);
解决方法 您可以在xml中使用它,就像其他视图一样,如< TextVIEw 尝试< packagename.Classname,例如< com.example.CustomVIEw 总结

以上是内存溢出为你收集整理的Android:来自xml布局的自定义视图全部内容,希望文章能够帮你解决Android:来自xml布局的自定义视图所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1127173.html

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

发表评论

登录后才能评论

评论列表(0条)

保存