【问题标题】:How to set an imageView to not be fixed at a position如何将imageView设置为不固定在某个位置
【发布时间】:2015-08-05 17:06:21
【问题描述】:

xml 文件:

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:id="@+id/singleProp"
    android:scrollbarAlwaysDrawVerticalTrack="true"
    android:visibility="gone">

    <ImageView
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:id="@+id/propertyImg"/>


    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/propertyData"
        android:layout_below="@id/propertyImg">

    </ListView>


</RelativeLayout>

使用上述代码,图像将固定在顶部中心位置。使用 html 中的 CSS 术语,该图像视图的样式是 style="position:fixed",但我想要的是 style="position:relative"

例如,

我希望图片能说明这个想法。 我可以知道我应该如何修改我的代码吗?

【问题讨论】:

  • 可以通过Java文件动态放置ImageView。

标签: android html css xml


【解决方案1】:

让我详细说明mark.zhai`s 的答案,因为这是我认为唯一正确的方法。

首先我想指出,您应该考虑使用RecyclerView 而不是ListView 来实现您的列表(现在通常倾向于使用RecyclerViewListView 有点被弃用了)。 ..

如果您想确保您的ImageView 与您的列表很好地(滚动方式)配合使用(在滚动集成上没有太多“副业”),您应该将其作为列表的第一项来实现。如果你坚持使用ListView,你可以使用它的header 函数并添加ImageViewListView's 方法addHeaderView。如果您决定迁移到RecyclerView(我认为您应该这样做),您可以以更困难的方式完成(更多内容,例如here)。

【讨论】:

    【解决方案2】:

    你为什么不让 imageview 成为 listview 的一个项目

    【讨论】:

    • 我可以在没有 Inflater 的情况下在 listVist 中制作图像视图吗?
    • 当然可以,在写getView的时候,只要position为0的时候就返回一个imageview。
    【解决方案3】:

    为此,您需要创建一个自定义列表视图,该列表视图将第一项作为图像视图,然后将所有列表项都包含在内。也许你可以通过使用 position(int) 在你的适配器 getview 方法中控制它

    例如,如果位置等于“0”,则仅显示图像视图,如果位置不等于“0”,则使用可见性显示您的其余元素

    注意:这里它们可能会出现性能问题,因为它每次都会加载不必要的视图

    【讨论】:

      【解决方案4】:

      为此,您需要滚动整个布局。在一般情况下,当您在列表视图上一扔时,只有列表视图中的项目会移动。 检查这个link

      【讨论】:

        【解决方案5】:

        我不完全确定您在问什么,因为我对 CSS 了解不多,但您可以查看此链接,该链接描述了在相对布局中对齐元素。

        您可能想尝试添加 alignParentLeft 或 alignParentRight。 请记住,边距在对象外部,而填充在内部。例如,要将图像从左侧移动 20dp,您可以:

        <ImageView
                android:layout_alignParentLeft="true"
                android:layout_marginLeft="20dp"
                android:layout_width="200dp"
                android:layout_height="200dp"
                android:id="@+id/propertyImg"/>
        

        这里有一些关于掌握相对布局的有用链接:

        Relative Layout Params

        Moving Elements Around in a Relative Layout Tutorial

        Another RelativeLayout Example

        Margins and Padding

        【讨论】:

          【解决方案6】:

          您为什么不使用 layout_below 将您的布局置于您想要的任何下方,并使用 layout_gravity 设置它的重力。您可以查看这些Link 以更好地理解,它将帮助您解决这些问题。

          【讨论】:

            猜你喜欢
            • 2021-12-31
            • 1970-01-01
            • 1970-01-01
            • 2018-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-07-28
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多