我正致力于CardView
上的属性的展开和折叠。
public class SimpleCardView extends CardView {
private int animationDuration;
public SimpleCardView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public SimpleCardView(Context context) {
super(context);
}
public SimpleCardView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void expand(){
final int initialHeight = getHeight();
final float scale = getContext().getResources().getDisplayMetrics().density;
int targetHeight = (int) (232 * scale + 0.5f);
final int distance_to_expand = targetHeight - initialHeight;
Animation animation = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
getLayoutParams().height = (int) (initialHeight +(distance_to_expand*interpolatedTime));
requestLayout();
}
@Override
public boolean willChangeBounds() {
return true;
}
};
animationDuration = distance_to_expand;
animation.setDuration((long)distance_to_expand);
startAnimation(animation);
}
public int getAnimationTime(){
return animationDuration;
}
public void collapse(){}
}
这是我的截图:
我正在为目标高度设置常量值。
int targetHeight = (int) (232 * scale + 0.5f);
此处,targetHeight
是CardView
的可扩展高度。
因此,当内容太长时,只显示少部分内容。
有没有办法动态设置高度而不是常量值?
答案 0 :(得分:0)
你有没有尝试过:wrap_content
android:layout_height="wrap_content"
<android.support.v7.widget.CardView
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="wrap_content">
您需要删除类SimpleCardView
的静态高度。
**或你需要计算身高**
为此,您需要将文本设置为TextView
然后
使用下面的行计算TextView
的高度,然后通过制作任何setter方法传递到SimpleCardView
。
TextView textview ;
textveiw.setText("your text");
textview.mesure(0,0);
int height = textview.getMesuredHeight();