在我的主布局文件中,我有一个 RelativeLayout,其权重为 1(基本上是为了显示地图)在一个权重为 2 的 LinearLayout 之上,这样声明:
<LinearLayout
android:id="@+id/GlobalLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/UpLayout"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1" >
</RelativeLayout>
<LinearLayout
android:id="@+id/DownLayout"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="2"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
DownLayout 包含一个项目列表,当我点击一个项目时,我想将 DownLayout 的权重更改为 4,因此上层布局(地图)只占屏幕的 1/5 而不是 1/3。
我设法通过更改 LayoutParams 来做到这一点:
LinearLayout linearLayout = (LinearLayout) mActivity.findViewById(R.id.DownLayout);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
params.weight = 4.0f;
linearLayout.setLayoutParams(params);
它有效,但我不满意,变化太快了,没有过渡,但我希望它是平稳的。有没有办法为此使用动画?
我找到了一些使用 ObjectAnimator 更改 weightSum 的示例,但它并不想要我想要的(如果我只更改此属性,我的向下布局下方有一些可用空间):
float ws = mLinearLayout.getWeightSum();
ObjectAnimator anim = ObjectAnimator.ofFloat(mLinearLayout, "weightSum", ws, 5.0f);
anim.setDuration(3000);
anim.addUpdateListener(this);
anim.start();
有没有办法使用 ObjectAnimator (或其他东西)来做到这一点?
谢谢 !