android-创建在xml属性中接受其他布局的自定义视图
作者:互联网
我正在尝试解决的问题是open question,我可能已经找到了一种可能的解决方案,该解决方案不易出错.但是,我不知道如何编写解决方案.
该解决方案与android.support.design.widget.NavigationView如何以XML处理标头视图非常相似!唯一的问题是我尝试搜索NavigationView的源代码,但似乎找不到它.我可以轻松找到其他Android源代码-更新的设计库除外.
如果可以从Google找到源代码,那么可以实现类似的功能.
码
<android.support.design.widget.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/drawer"
app:headerLayout="@layout/drawer_header" />
看到最后一行吗?我希望能够对自己的customView执行类似的操作以在其中插入另一个视图.
所以我的问题是:
>设计库NavigationView的源代码在哪里?
要么
>是否有另一个自定义视图,允许您在其中已在线发布代码的布局中插入?
要么
>如果没有任何在线内容,那么一个人该怎么做呢?有可能的. NavigationView做到了.
解决方法:
这是一个示例,您可以如何做:
在您的resources.xml中:
<declare-styleable name="MyCustomView">
<attr name="child_view" format="reference" />
</declare-styleable>
在您的MyCustomView.java中:
public class MyCustomView extends ViewGroup {
public MyCustomView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.MyCustomView, 0, 0);
int childView = a.getResourceId(R.styleable.MyCustomView_child_view, R.layout.default_child_view);
a.recycle();
LayoutInflater.from(context).inflate(childView, this, true);
}
}
在您的布局文件中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<your.package.MyCustomView
android:layout_width="match_parent"
android:layout_height="wrap_content"
custom_view:child_view="@layout/some_layout" />
</LinearLayout>
标签:android-layout,android-custom-view,view,android 来源: https://codeday.me/bug/20191028/1949725.html