I am new to the Android world.... it will be a great help if someone correct me... what am I doing wrong the below code...
cutomviewxml.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Extended View class ...code...
mycustomTextview.java
public class mycustomTextview extends View {
private View mView;
Context mycontext;
public mycustomTextview(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
this.mycontext = context;
LayoutInflater inflater;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mView = inflater.inflate(R.layout.cutomviewxml, null);
}
Activity main.xml file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<com.motorola.mycustomTextview
android:id="@+id/customtextview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_marginLeft="143dp"
android:layout_marginTop="69dp"
android:layout_toRightOf="@+id/textView1" />
</RelativeLayout>
Activity class sample.java ..
public class sample extends Activity{
private static final String LOG_TAG = "sampleActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(LOG_TAG,"OnCreate of sampleActivity");
setContentView(R.layout.main);
}
}
I think you have done a little mistake in mycustomTextview
, when you inflate your layout you have to pass ViewGroup too, you can use this line
mView = inflater.inflate(R.layout.cutomviewxml, this);
To get access to views inside of custom view override onFinishInflate() method and use findViewById(). For the problem at hand the solution will be as follows.
public class mycustomTextview extends LinearLayout {
Context mycontext;
private TextView textView1;
public mycustomTextview(Context context, AttributeSet attrs) {
super(context, attrs);
this.mycontext = context;
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
textView1=(TextView) findViewById(R.id.textView1);
}
}
Use this in your xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<yourpackagename.viewclassname android:id="@+id/myView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></yourpackagename.viewclassname>
</LinearLayout>
public class ExampleView extends FrameLayout {
ImageView mImage;
public ExampleView(Context context) {
super(context);
init(context);
}
public void init(Context context) {
View view = inflate(context, R.layout.my_view_layout,this);
view.findViewById(R.id.image)
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With