android 如果 高度设为0,android – LinearyLayout一旦高度为0就不会调整大小

有一个奇怪的.我把它归结为一个非常简单的例子.真的想不出来.

我在LinearLayout中有一个LinearLayout.我想使用动画来调整孩子的大小(有时候我会使用动画片).这是我的布局XML.

android:layout_width="fill_parent" android:layout_height="fill_parent"

android:orientation="vertical" >

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

android:gravity="center" />

现在,正如您所看到的,有一个按钮,这是该按钮的代码.

public void btnDoAnimDown_OnClick(View v)

{

View pnlSlider = findViewById(R.id.animation_subject);

pnlSlider.measure(1000,1000);

DropDownAnim anim = new DropDownAnim(pnlSlider,pnlSlider.getMeasuredHeight(),true);

anim.setDuration(2000);

pnlSlider.startAnimation(anim);

return;

}

如果你现在运行它,它不会滑下来.完全没有.但是,如果您要将Button移动到我已命名为Overview的LinearLayout并将其放在Child LinearLayout之后,那么它就可以了!像这样…

android:layout_width="fill_parent" android:layout_height="fill_parent"

android:orientation="vertical" >

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

android:gravity="center" />

它现在滑下来,正如预期的那样.显然,父布局会发生一些事情…因为getMeasuredHeight()返回正确的值,所以动画实际上并没有运行!

这是动画类,我错过了什么傻事?可能是我!

import android.util.Log;

import android.view.View;

import android.view.animation.Animation;

import android.view.animation.Transformation;

public class DropDownAnim extends Animation {

int targetHeight;

View view;

boolean down;

public DropDownAnim(View view,int targetHeight,boolean down) {

this.view = view;

this.targetHeight = targetHeight;

this.down = down;

}

@Override

protected void applyTransformation(float interpolatedTime,Transformation t) {

int newHeight;

if (down) {

newHeight = (int) (targetHeight * interpolatedTime);

} else {

newHeight = (int) (targetHeight * (1 - interpolatedTime));

}

Log.d("new height",String.valueOf(newHeight));

view.getLayoutParams().height = newHeight;

view.requestLayout();

}

@Override

public void initialize(int width,int height,int parentWidth,int parentHeight) {

super.initialize(width,height,((View)view.getParent()).getWidth(),parentHeight);

}

@Override

public boolean willChangeBounds() {

return true;

}

}

任何帮助都会很棒!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值