动态更改 View 对象的属性
Dynamically change properties of View objects
在我的 activity 创作中,我设置了一个 AlphaAnimation
以执行一些视觉效果。现在我已经设置了 LayoutAnimationListener
并覆盖了 onAnimationEnd()
方法。动画正确执行,onAnimationEnd()
的回调也正常工作。在 onAnimationEnd()
方法中,我想对 Activity 布局的两个子对象执行另一个动画。这是在 XML 中用 属性 android:visibility="gone"
定义的两个 EditText
。对于初学者,我想做的是将它们设置为 VISIBLE
。
我已经尝试从他们的 parent
获取参考,更改他们的 setVisibility(View.VISIBLE);
并最终使父视图无效。
这种尝试似乎没有用。您会在下面找到代码:
@Override
public void onAnimationEnd(Animation animation) {
Log.d(TAG, "onAnimationEnd()");
// TODO move icon up, make edittext's appear.
RelativeLayout layout = (RelativeLayout) View.inflate(
getApplicationContext(), R.layout.splash_dialog_layout,
null);
LinearLayout linear = (LinearLayout) layout.getChildAt(0);
Log.d(TAG, "Children" + linear.getChildCount());
email = (EditText) linear.findViewById(R.id.splash_Email);
email.setVisibility(View.VISIBLE);
pass = (EditText) linear.findViewById(R.id.splash_password);
pass.setVisibility(View.VISIBLE);
linear.invalidate();
layout.invalidate();
Splash_Activity.layout.invalidate();
}
};
我试过从一个父项中删除所有视图,然后将它们一个一个地添加并再次失效,但这似乎也不起作用。
我可能对视图 inflation 的运作方式有误解,这不应该有效吗?
感谢您的宝贵时间。
展开布局会创建新的视图层次结构,这意味着您获得的视图实际上与屏幕上显示的视图不同,即使它们具有相同的 ID。
您可以通过多种方式获取屏幕视图,但最简单的可能是查询包含 Activity
.
Activity.this.findViewById(R.id.splash_Email);
在我的 activity 创作中,我设置了一个 AlphaAnimation
以执行一些视觉效果。现在我已经设置了 LayoutAnimationListener
并覆盖了 onAnimationEnd()
方法。动画正确执行,onAnimationEnd()
的回调也正常工作。在 onAnimationEnd()
方法中,我想对 Activity 布局的两个子对象执行另一个动画。这是在 XML 中用 属性 android:visibility="gone"
定义的两个 EditText
。对于初学者,我想做的是将它们设置为 VISIBLE
。
我已经尝试从他们的 parent
获取参考,更改他们的 setVisibility(View.VISIBLE);
并最终使父视图无效。
这种尝试似乎没有用。您会在下面找到代码:
@Override
public void onAnimationEnd(Animation animation) {
Log.d(TAG, "onAnimationEnd()");
// TODO move icon up, make edittext's appear.
RelativeLayout layout = (RelativeLayout) View.inflate(
getApplicationContext(), R.layout.splash_dialog_layout,
null);
LinearLayout linear = (LinearLayout) layout.getChildAt(0);
Log.d(TAG, "Children" + linear.getChildCount());
email = (EditText) linear.findViewById(R.id.splash_Email);
email.setVisibility(View.VISIBLE);
pass = (EditText) linear.findViewById(R.id.splash_password);
pass.setVisibility(View.VISIBLE);
linear.invalidate();
layout.invalidate();
Splash_Activity.layout.invalidate();
}
};
我试过从一个父项中删除所有视图,然后将它们一个一个地添加并再次失效,但这似乎也不起作用。
我可能对视图 inflation 的运作方式有误解,这不应该有效吗?
感谢您的宝贵时间。
展开布局会创建新的视图层次结构,这意味着您获得的视图实际上与屏幕上显示的视图不同,即使它们具有相同的 ID。
您可以通过多种方式获取屏幕视图,但最简单的可能是查询包含 Activity
.
Activity.this.findViewById(R.id.splash_Email);