您可以在 XML 布局文件中将视图设置为另一个视图的 属性 吗?
Can you set a view as a property of another view in an XML layout file?
我们有一个自定义 GridView
,它具有 headerView
和 footerView
属性。我想知道在 Android 中是否可以从布局文件中设置这些属性。
XAML in Windows 让您可以轻松地做到这一点,因为您可以通过属性(对于字符串、数字或其他简单类型)或通过嵌套元素(对于任何对象)指定属性type) 使用 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 中做类似的事情,或者我必须在 Activity/Fragment 的代码隐藏中做这件事?
是的,你可以。
您可以通过扩展 GridView class 创建一个 Custom View 并通过属性添加一些逻辑。这不会作为来自 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"
Google 有这个样本:
HeaderGridView
它使用不同的方法,如果你复制这个 class 你将只需要使用这个 "HeaderGridView" 并从它调用 addHeaderView 方法发送你的 header 视图膨胀。
欢迎提出任何问题,很高兴为您解答。
我们有一个自定义 GridView
,它具有 headerView
和 footerView
属性。我想知道在 Android 中是否可以从布局文件中设置这些属性。
XAML in Windows 让您可以轻松地做到这一点,因为您可以通过属性(对于字符串、数字或其他简单类型)或通过嵌套元素(对于任何对象)指定属性type) 使用 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 中做类似的事情,或者我必须在 Activity/Fragment 的代码隐藏中做这件事?
是的,你可以。
您可以通过扩展 GridView class 创建一个 Custom View 并通过属性添加一些逻辑。这不会作为来自 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"
Google 有这个样本: HeaderGridView
它使用不同的方法,如果你复制这个 class 你将只需要使用这个 "HeaderGridView" 并从它调用 addHeaderView 方法发送你的 header 视图膨胀。
欢迎提出任何问题,很高兴为您解答。