裁剪并显示一个孩子,同时允许孩子通过将height设置为wrap_content来获取其内容的全部高度?

Sad*_*ana 6 android android-linearlayout android-cardview

我的孩子是一个具有动态高度的LinearLayout,它可以在运行时更改,可以包含图像,并包含不同数量的子视图(也可能有子视图).

这个孩子LinearLayout在CardView中.现在我希望这张卡片视图可以折叠.换句话说,当折叠时,它需要具有较小的高度(例如150dp).在此模式下,卡片应仅显示子LinearLayout内容的前150dp(减去填充).但是应该允许LinearLayout采用最大尺寸(尽管CardView边界下方的底部未显示,裁剪),方法是将其高度设置为wrap_content.这类似于我放置ScrollView(滚动到顶部)而不是CardView时会发生的情况.但是当我使用CardView执行此操作时.LinearLayout不会采用最大高度来包装其子项的高度,而是采用由其父CardView限定的高度.

这会导致图像缩小,并可能导致许多意外错误.

有没有办法实现功能?是否存在除cardview之外的其他布局,它直接支持裁剪并仅显示其内容的一部分,同时使孩子感觉它可以无限期地增强.

Rad*_*ekJ 2

扩展LinearLayout您正在使用的CardView其他类(例如MyFrameLayout)和重写方法:

@Override
protected void measureChildWithMargins(View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed) {
    super.measureChildWithMargins(child, parentWidthMeasureSpec, widthUsed, View.MeasureSpec.UNSPECIFIED, heightUsed);
}
Run Code Online (Sandbox Code Playgroud)

然后在布局中使用它,并且在运行时您可以更改高度参数。