我的 child 是一个具有动态高度的 LinearLayout,它可以在运行时更改,可以包含图像并由不同数量的 subview 组成(也可能有 subview )。
此子 LinearLayout 位于 CardView 内。现在我希望这张卡片 View 是可折叠的。换句话说,当折叠时它需要有一个较小的高度(比如 150dp)。在此模式下,卡片应仅显示子 LinearLayout 内容的顶部 150dp(减去填充)。但是,通过将其高度设置为 wrap_content,应该允许 LinearLayout 采用最大尺寸(尽管 CardView 边界下方的底部未显示,裁剪)。这类似于我放置 ScrollView(当滚动到顶部时)而不是 CardView 时会发生的情况。但是当我使用 CardView 执行此操作时。 LinearLayout 不采用最大高度来包裹其子项的高度,而是采用由其父 CardView 限定的高度。
这会导致图像缩小并可能导致许多意外错误。
有没有办法实现这个功能? 有没有一种不同于cardview的Layout,直接支持裁剪,只显示部分内容,同时让 child 觉得可以无限增高。
最佳答案
使用其他类(例如 MyFrameLayout
)扩展您在 CardView
中使用的 LinearLayout
并覆盖方法:
@Override
protected void measureChildWithMargins(View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed) {
super.measureChildWithMargins(child, parentWidthMeasureSpec, widthUsed, View.MeasureSpec.UNSPECIFIED, heightUsed);
}
然后在布局中使用它,在运行时你可以改变高度参数。
关于android - 通过将高度设置为 wrap_content 来裁剪和显示 child ,同时允许 child 占据其内容的全部高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48515200/