【问题标题】:Crop ImageView in FrameLayout with wrap_content height使用 wrap_content 高度在 FrameLayout 中裁剪 ImageView
【发布时间】:2016-11-06 10:38:31
【问题描述】:

我想在FrameLayout 中拥有TextView 后面的图像。我需要FrameLayout 将其高度调整到内部TextView 并且不受图像大小的影响。图像应以原始大小位于文本后面,由FrameLayout 裁剪。这是我尝试过的:

<FrameLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:layout_gravity="right|center_vertical"
        android:gravity="center"
        android:alpha="0.1"
        android:id="@+id/img_logo" />

    <TextView
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textAllCaps="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:gravity="left|center_vertical"
        android:id="@+id/text_long" />

</FrameLayout>

这几乎是我想要的,除了 FrameLayout 的高度受图像大小的影响。它应该只随文本而变化。

【问题讨论】:

  • 这是一个很难解决的问题!我最初的反应是让 FrameaLayout 有一个固定的高度,而 ImageView 有一个 wrap_content 的高度,然后动态调整 FrameLayout 的大小以匹配 TextView 的高度。这个解决方案似乎是一种更优雅的方法(虽然没有代码,如果你想看的话,我可以给它一个答案形式):stackoverflow.com/a/21581103/6526330
  • @Dr.Nitpick 我试过了,但它不能正常工作。如果你能做到,我很乐意接受你的回答。
  • 好的,我今晚试试,然后告诉你

标签: android


【解决方案1】:

实际上,我认为您可以在不覆盖任何布局或编写任何 Java 代码的情况下做到这一点。相反,您可以将整个内容包装在RelativeLayout 中,将TextView 移动到FrameLayout 之后,并将FrameLayout 的顶部和底部设置为与textView 对齐。我承认这有点乱。为了解决这个问题,我建议将其设为自定义视图或将其放入您包含的另一个 xml 文件中。

编辑:实际上,您不再需要 FrameLayout,而是可以在 ImageView 上设置 android:layout_alignTop 和 android:layout_alignBottom 属性。这是它的样子:

<RelativeLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1">
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_alignTop="@+id/text_long"
        android:layout_alignBottom="@id/text_long"
        android:scaleType="centerCrop"
        android:layout_gravity="right|center_vertical"
        android:gravity="center"
        android:alpha="0.1"
        android:id="@+id/img_logo"/>
    <TextView
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textAllCaps="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:gravity="left|center_vertical"
        android:id="@id/text_long" />
</RelativeLayout>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2012-08-18
    • 1970-01-01
    • 2013-10-04
    相关资源
    最近更新 更多