Android-TextView与';零';高度
我想用ObjectAnimator手动设置TextView高度。 代码如下:Android-TextView与';零';高度,android,textview,Android,Textview,我想用ObjectAnimator手动设置TextView高度。 代码如下: if(condition){ height = 136; }else{ height = 0; } ObjectAnimator animator = ObjectAnimator.ofInt( mText, "height", height ).setDuration(400); animator.start(); 在某些情况下,这是可行的,但它不会将TextView高度设置
if(condition){
height = 136;
}else{
height = 0;
}
ObjectAnimator animator = ObjectAnimator.ofInt(
mText,
"height",
height
).setDuration(400);
animator.start();
在某些情况下,这是可行的,但它不会将TextView高度设置为0,而是大约80px。
为什么?我想您是想通过将“高度”设置为0来隐藏它?如果是这种情况,为什么不使用.setVisibility(View.GONE)?来隐藏和显示文本视图,设置其高度并不是一种好的做法,而是执行以下操作:
textview.setVisibility(View.GONE);
或
视图。已消失此视图不可见,并且不占用任何空间用于布局
视图。不可见此视图不可见,但仍会占用空间用于布局
要使其再次可见,请使用
textview.setVisibility(View.VISIBLE);
已编辑
要使用动画隐藏视图
ObjectAnimator anim = ObjectAnimator.ofFloat(view, "alpha", 0.0f);
anim.addListener(new AnimatorListener() {
...
@Override
public void onAnimationEnd(Animator animation) {
animDrawable.stop()
}
...
});
anim.setDuration(300).start();
这将逐渐淡入您的视图,并通过动画将其隐藏。如果根据其位置有其他视图,请使用setVisibility(view.INVISIBLE)。否则请使用setVisibility(View.GONE)。如果要隐藏带有动画的
文本视图,请使用下面的代码
ViewPropertyAnimator mTextAnimator = myTextView.animate()
.scaleY(0f)
.setListener(new Animator.AnimatorListener() {
public void onAnimationStart(Animator animation) {}
public void onAnimationRepeat(Animator animation) {}
public void onAnimationCancel(Animator animation) {}
public void onAnimationEnd(Animator animation) {
myTextView.setVisibility(View.GONE);
}
})
.setDuration(400);
mTextAnimator.start();
要使用动画显示TextView
,请使用
mTextAnimator = myTextView.animate()
.scaleY(1f)
.setListener(null)
.setDuration(400);
mTextAnimator.start();
在我的.xml
文件中,我使用了android:visibility=“gone”
。原来我有这个,
<TextView
android:id="@+id/labelReachable"
android:layout_width="wrap_content"
android:gravity="left"
android:textSize="15dp"
android:layout_marginTop="10dp"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="Reachability"></TextView>
<ImageView
android:background="@drawable/bar_dark"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<LinearLayout
android:id="@+id/insertPings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical" >
</LinearLayout>
为什么要将其设置为0?若要隐藏(并显示)文本视图。。有更好的方法吗?我是Android新手:/n不,你应该使用它的方法。查看下面我的答案。查看我的答案以隐藏带有动画的文本视图。它比你的代码简单。请参阅我的更新答案。我希望答案是完整的。谢谢,但我如何用动画设置“可见性”?现在,在动画结束时,我设置了可见性,但有一个“适合”。。。高度(使用动画)从136更改为大约80,然后立即更改为0。是否要更改此高度?我要使用动画将高度设置为零。这会隐藏视图,但仍会占用布局空间…:(请查看此链接..像另一个答案一样,这会隐藏视图,但它仍然会占用空间用于布局目的…@simone_s1994 okay更新了我的答案。我认为它将完全满足您的要求。它将使用动画隐藏,一旦隐藏,视图将不会占用任何空间。确定“隐藏方法”,但我更改了高度以使用动画移动其余内容。。
<TextView
android:id="@+id/labelReachable"
android:layout_width="wrap_content"
android:gravity="left"
android:textSize="15dp"
android:layout_marginTop="10dp"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="Reachability"></TextView>
<ImageView
android:background="@drawable/bar_dark"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<LinearLayout
android:id="@+id/insertPings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical" >
</LinearLayout>
<TextView
android:id="@+id/labelReachable"
android:layout_width="wrap_content"
android:gravity="left"
android:textSize="15dp"
android:layout_marginTop="10dp"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:visibility="gone"
android:text="Reachability"></TextView>
<ImageView
android:background="@drawable/bar_dark"
android:layout_width="fill_parent"
android:visibility="gone"
android:layout_height="wrap_content"/>
<LinearLayout
android:id="@+id/insertPings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:visibility="gone"
android:orientation="vertical" >
</LinearLayout>