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