Android自定义xml小部件

时间:2010-04-14 14:48:16

标签: android widget

我的布局文件夹中有一个XML文件,它有我想要的自定义窗口小部件/视图(不知道这里有什么正确的术语)。

但我如何制作它以便我可以以编程方式添加一个或多个活动

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="wrap_content"
              android:id="@+id/viewLog">
  <TextView android:id="@+id/viewLogClimbName"
            android:layout_width="fill_parent"
            android:singleLine="true"
            android:ellipsize="end"
            android:gravity="left"
  />
  <LinearLayout android:orientation="horizontal"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1">
    <LinearLayout android:orientation="vertical"
                  android:layout_width="fill_parent"
                  android:layout_height="wrap_content">
      <TextView android:id="@+id/viewLogDate"
                android:layout_width="fill_parent"
                android:singleLine="true"
                android:ellipsize="end"
                android:gravity="left"
      />
      <TextView android:id="@+id/viewLogStyle"
                android:layout_width="fill_parent"
                android:singleLine="true"
                android:ellipsize="end"
                android:gravity="left"
      />
    </LinearLayout>
    <TextView android:id="@+id/viewLogDetails"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:ellipsize="end"
              android:gravity="left"
              android:layout_weight="1"
    />
  </LinearLayout>
</LinearLayout>

我已经看过了android的操作方法,并且真的不明白它的内容是什么

2 个答案:

答案 0 :(得分:3)

LinearLayout root = (LinearLayout) findViewById(R.id.my_root_viewgroup);
View newView = View.inflate(this, R.layout.my_layout_file, null);
root.addView(newView);

如果需要,您可以投射newView,并且可以使用newView.findViewById(R.id.my_other_child_view)

在该充气视图中查找视图

答案 1 :(得分:0)

假设您的布局名为res/some_layout.xml

  LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  View newView = inflater.inflate(R.layout.some_layout, null);

然后add()将您的newView添加到其他视图中,例如,使用LinearLayout检索主布局中的findViewById()