是否有人知道从xml布局文件创建Java代码的工具。
快速创建我希望包含在活动布局中的自定义视图(我不想创建单独的库项目)会很有用。
因此,假设我的自定义视图是具有一些子视图的相对布局。
如果该工具可以从这样的布局文件生成,那将是很好的:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- some child Views -->
</RelativeLayout>
像这样的java类:
class CustomView extends RelativeLayout{
/*
* Generate all the Layout Params and child Views for me
*/
}
最后,我可以在普通的XML中使用这个生成的类
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
text="Hello World" />
<com.example.CustomView
android:layout_width="match_parent"
android:layout_height="100dp"
/>
</LinearLayout>
这样的工具是否存在?
答案 0 :(得分:2)
不,因为有两种更好的方法可以做到。
1)使用<include>
标签。这允许您包含第二个xml文件。
2)使用自定义类,但让它在其构造函数中膨胀第二个xml。这样,您可以将该布局保留在类的xml中。
如果我想创建一次性设置/更改多个值的自定义功能,通常我会使用2,如果我只想将我的xml文件拆分成块,则使用1。
答案 1 :(得分:2)
快速创建自定义视图(我不想这样做)会很有用 创建一个单独的库项目,我想包含在 活动布局。
你已经可以做到了。创建自定义视图类并在那里扩展自定义布局。
package com.example.view;
class CustomView extends LinearLayout {
public CustomView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
LayoutInflater.from(context).inflate(R.layout.custom_view, this, true);
}
}
使用<merge>
标记作为根,为该自定义视图类创建布局。 Android会将标记内容添加到您的自定义视图类中,实际上,在我们的情况下为LinearLayout
。
// custom_view.xml
<merge xmlns:android="http://schemas.android.com/apk/res/android"
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
text="Hello World" />
</merge>
你完成了。现在,您可以将此自定义类添加到布局中。
<com.example.view.CustomView
android:id="@id/title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
/>