我在ScrollView中有ConstraintLayout。 我正在尝试使用ConstraintLayout动画。它可以在ScrollView之外完美地工作,但是当我想在ScrollView中使用它时,AndroidStudio会说:
android.support.v4.widget.NestedScrollView cannot be cast to android.support.constraint.ConstraintLayout
我知道它是因为我的根布局是ScrollView,但我不知道如何解决这个问题。
我尝试在ScrollView之前添加另一个ConstraintLayout,这一次APP正常运行,但是当我按下按钮时却什么也没发生。
<android.support.v4.widget.NestedScrollView
android:id="@+id/scrollView2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<android.support.constraint.ConstraintLayout
android:id="@+id/const1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/background_light"
tools:context=".MainActivity">
这就是我在MainActivity中所做的
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(this, R.layout.activity_main_animation);
ChangeBounds transition = new ChangeBounds();
transition.setInterpolator(new AnticipateInterpolator(1.0f));
transition.setDuration(1200);
TransitionManager.beginDelayedTransition(cc1, transition);
constraintSet.applyTo(cc1);
答案 0 :(得分:0)
如果您不介意为视图中的所有布局更改设置动画,则可以尝试以下方法。添加起来很简单,看看它是否适合您的用例。添加:
const withConfig = Comp => props => (
<Config.Consumer>{config => <Comp config={config} {...props} />}</Config.Consumer>
);
@connect(...)
@withConfig
class someNestedComponent extends Component {
componentDidMount() {
console.log(this.props.config);
}
...
}
转到NestedScrollView,然后关闭所有转换。每当您更改视图范围或在屏幕上或屏幕外添加新内容时,android都会自动处理动画。同样,您无法控制动画的速度等YMMV,但是值得一试。
答案 1 :(得分:0)
更改以下代码
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(this, R.layout.activity_main_animation); //this line need to be changed to
constraintSet.clone(this, const1);// Pass id of ConstraintLayout for cloning as root layout of your xml file is not a ConstraintLayout.