2

我们有一个GridView具有headerViewfooterView属性的自定义。我想知道在 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 中做类似的事情,还是我必须在 Activity/Fragment 的代码隐藏中做?

4

1 回答 1

1

是的你可以。

您可以通过扩展 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

它使用不同的方法,如果你复制这个类,你只需要使用这个“HeaderGridView”并从它调用 addHeaderView 方法发送你的标题视图膨胀。

随意提出任何问题,很高兴回答。

于 2017-10-14T04:09:11.883 回答