Android: Custom view from xml layout

akosotrolm

New Member
i would like to create a custom \[code\]View\[/code\] (subclass of the \[code\]View\[/code\] class) and use a layout xml resource.I want something like this:\[code\]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);}\[/code\]This actually creates a \[code\]View\[/code\] with the right height and width (a \[code\]ScrollView\[/code\] with a list of those has exactly the expected length and scrollbars) but they are empty (black) even though the xml layout contains a lot of \[code\]TextViews\[/code\].This is my xml layout:\[code\]<?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>\[/code\]This is my main layout:\[code\]<?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>\[/code\]This is how I add the custom view to my main view:Not working (what I try to achieve):\[code\]TweetView ctweet = new TweetView(getApplicationContext(),tweet);timeline.addView(ctweet);\[/code\]My current solution (works, but uses no custom view):\[code\] 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);\[/code\]
 
Back
Top