java - 从 xml 创建自定义 View

标签 java android xml view

我想创建一个来自 XML 的自定义 View 。

这是我的 XML:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
    <TextView 
        android:id="@+id/movieTitle"
        android:text="@string/movietitle"
        android:textSize="35dp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        />
    <com.galite.headliner.views.LoaderImageView
        android:id="@+id/moviePoster" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/movieTitle"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:contentDescription="@string/poster"
        />
    <TextView
        android:id="@+id/movieDescription"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/description"
        android:layout_below="@id/moviePoster"
        android:gravity="center"
        />
</RelativeLayout>

我想膨胀到自定义 View ,因为我需要使用 onClick 等方法和所有内容。

这是我的构造函数:

public MyView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    this.context = context;
    initializeView();
}

public void initializeView(){
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    v = inflater.inflate(R.layout.movie, null);
}

如何使 MyView 等于 v ?

最佳答案

您必须将膨胀 View v 附加到 MyView,如下所示:

v = inflater.inflate(R.layout.movie, this, true);

如果您想要精确的布局,请使 MyView 扩展 RelativeLayout 并修改 xml 布局,如下所示:

<merge xmlns:android="http://schemas.android.com/apk/res/android" >
    <TextView 
        android:id="@+id/movieTitle"
        android:text="@string/movietitle"
        android:textSize="35dp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        />
    <com.galite.headliner.views.LoaderImageView
        android:id="@+id/moviePoster" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/movieTitle"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:contentDescription="@string/poster"
        />
    <TextView
        android:id="@+id/movieDescription"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/description"
        android:layout_below="@id/moviePoster"
        android:gravity="center"
        />
</merge>

关于java - 从 xml 创建自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9446895/

相关文章:

java - 像 Uber Android 一样在 map 上旋转标记和移动动画

java - 从 "unstructured"纯文本中解析出 XML

xml - Golang xml marshal 追加更深的项目?

java - 我应该尽可能使用并行流吗?

android - 如何绕过在小部件中使用 ListView ?

android - 无法从 NumberPicker 中选择数字

android - Android 进程可以托管多个 Dalvik VM 吗?

java - 如何复制作为资源注入(inject)的目录?

java - 对于并发测试执行,WebDriver 设置应该是静态的吗?

java - 了解 Java 转换器接口(interface)