我们有一个自定义GridView
,它具有headerView
和footerView
属性。 我想知道是否可以在 Android 中从布局文件中设置这些属性。
Windows 中的 XAML 使你可以轻松执行此操作,因为你可以通过属性(对于字符串、数字或其他简单类型)或通过具有ControlType:PropertyName
语法的嵌套元素(对于任何对象类型)来指定属性。
下面是一个伪版本,如果Android支持类似的东西,这将是什么样子:
<MyCustomGrid
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- This would set the 'headerView' property
on 'MyCustomGrid' to a TextView -->
<MyCustomGrid:headerView>
<TextView android:text="I'm the Header TextView" />
</MyCustomGrid:headerView>
</MyCustomGrid>
显然,上述内容是无效的。 但是是否可以在Android中做类似的事情,或者我必须在活动/片段的代码隐藏中做?
是的,你可以。
可以通过扩展 GridView 类创建自定义视图,并通过属性添加一些逻辑。这不能用作 XAML 中的附加属性(如 XAML UWP 中的 Grid.Column 或 Grid.Row),但你可以执行以下操作:
<com.teste.widget.MarqueIVGridView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:my_header="@layout/my_header"
/>
不要忘记在布局的根目录下添加命名空间:
xmlns:app="http://schemas.android.com/apk/res-auto"
谷歌有这个例子:标题网格视图
它使用不同的方法,如果你复制这个类,你只需要使用这个"HeaderGridView"并从它调用addHeaderView方法,发送你的标题视图膨胀。
随时提出任何问题,很高兴回答。