私はこのようなAndroidのレイアウトを持っている:兄弟の位置が変更されたときにアンドロイドの高さをリフレッシュするにはどうすればよいですか?
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_layout"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_weighing"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cv_price_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- another view elements here -->
</android.support.v7.widget.CardView>
</LinearLayout>
基本的に私は、最初の要素が親と第二要素間の残りのスペースを埋めたいです。実行時に2番目の要素のY位置を変更するまでは正常に動作します。私は親と最初の要素の両方で.invalidate()
と.requestLayout()
を呼び出そうとしましたが、期待通りに動作しないようです。
<RelativeLayout>
を使用して親レイアウトを変更しようとしましたが、最初の要素にandroid:layout_above="@+id/cv_price_holder"
を設定しましたが、うまく機能しませんでした。
編集:ここでは、レイアウトを切り替えるには、呼び出されたメソッドは、次のとおりです。
public void togglePriceHolder(){
float newY = mPriceHolderToggleState ? -mPriceHolderToggleLimitY : mPriceHolderToggleLimitY;
int newIcon = mPriceHolderToggleState ? R.drawable.ic_keyboard_arrow_down_white_36dp : R.drawable.ic_keyboard_arrow_up_white_36dp;
mBtnTogglePriceHolder.setImageResource(newIcon);
mCvPriceHolder.animate().translationYBy(newY).setListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {}
@Override
public void onAnimationEnd(Animator animation) {
// refresh the layout
rvWeighing.forceLayout();
mMainLayout.requestLayout();
}
@Override
public void onAnimationCancel(Animator animation) {}
@Override
public void onAnimationRepeat(Animator animation) {}
});
mPriceHolderToggleState = !mPriceHolderToggleState;
}
質問は第二の要素のY位置が変更されたときに最初の要素は、その高さを調整することができますので、私はレイアウトをリフレッシュすることができますどのようにでしょうか?事前に
おかげで
こんにちはサルサック、助けてくれてありがとうございますが、私はまだそれを動作させることはできません。私はレイアウトを切り替えるために使用するメソッドを追加する質問を編集しました。それは間違っていますか? – qatz
@qatzあなたが試すことができることは、mMainLayoutではなくmCvPriceHolderでrequestLayoutを呼び出すことです。 –