我的课程延伸LinearLayout
在构造函数中我调用
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout view = (LinearLayout)inflater.inflate(R.layout.titlebar, this, true);
我可以在此视图中访问视图,但未绘制。我认为原因是这个视图的mParent仍然是null。但为什么? Partent应该是这个(扩展LinearLayout的类)
这里是xml:
<RelativeLayout android:id="@+id/header"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="35px"
android:layout_width="fill_parent"
android:background="@drawable/titlebar_bg">
<TextView android:layout_width="wrap_content"
android:textColor="#000000"
android:text="test"
android:id="@+id/title"
android:layout_alignParentTop="true"
android:layout_marginLeft="10pt"
android:layout_height="wrap_content"
android:textSize="10pt"
android:layout_marginTop="3dip"></TextView>
<TextView android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="10:09 AM"
android:id="@+id/time"
android:textColor="#000000"
android:layout_alignParentRight="true"
android:layout_marginRight="5px"
android:layout_marginTop="3px"
android:textSize="10pt"></TextView></RelativeLayout>
解
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:layout_width="wrap_content"
android:textColor="#000000"
android:text="test"
android:id="@+id/title"
android:layout_alignParentTop="true"
android:layout_marginLeft="10pt"
android:layout_height="wrap_content"
android:textSize="10pt"
android:layout_marginTop="3dip"></TextView>
<TextView android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="10:09 AM"
android:id="@+id/time"
android:textColor="#000000"
android:layout_alignParentRight="true"
android:layout_marginRight="5px"
android:layout_marginTop="3px"
android:textSize="10pt"></TextView>
使用merge标记并使用xml标记。
<package.Titlebar
android:id="@+id/testtitlebar"
android:layout_height="35px"
android:layout_width="fill_parent"
android:background="@drawable/titlebar_bg"></package.Titlebar>
这就是它在课堂上的表现:
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.titlebar, this);
没有onLayout功能!!!我的一个缺点
答案 0 :(得分:0)
你应该尝试: LinearLayout view =(LinearLayout)inflater.inflate(R.layout.titlebar,null,false);
AFAIK这将返回视图,其中root是膨胀的XML的根。
答案 1 :(得分:0)
你应该试试
LayoutInflater inflater = LayoutInflater.from(this);
如果您在活动课程内,或
LayoutInflater inflater = LayoutInflater.from(YourActivity.this);
如果您在活动类中的内联类中。
然后,如果您要将新视图添加到活动中的其他视图(例如my_canvas):
//[YourActivity.] is needed when you are in an inline class!
//RelativeLayout is not mandatory, you can have any other layout there
final RelativeLayout canvas = (RelativeLayout) [YourActivity.]this.findViewById(R.id.my_canvas);
final View titleBar = inflater.inflate(R.layout.titlebar, canvas, false);
现在您可以在任何需要的地方添加此titleBar。
<强>更新强>
这是inflate方法的apidocs:
public View inflate (int resource, ViewGroup root, boolean attachToRoot)
自:API级别1
从指定的xml资源中扩充新的视图层次结构。如果出现错误,则抛出InflateException。
<强>参数强>
资源要加载的XML布局资源的ID(例如,R.layout.main_page)
root 可选视图是生成的层次结构的父级(如果attachToRoot为true),或者只是为返回的层次结构的根提供一组LayoutParams值的对象(如果attachToRoot为false)。
attachToRoot 是否应将膨胀的层次结构附加到根参数?如果为false,则root仅用于为XML中的根视图创建LayoutParams的正确子类。
<强>返回强> 膨胀层次结构的根视图。如果提供了root并且attachToRoot为true,则为root;否则它是膨胀的XML文件的根。