Böyle bir Android Düzeni vardır: Kardeş pozisyonu değiştiğinde android görünümü nasıl yenilenir?
<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>
Temelde ben ilk eleman üst ve ikinci eleman arasında kalan boşluğu doldurmak istiyoruz. Çalışma zamanında ikinci elemanın Y konumunu değiştirene kadar iyi çalışıyor. Hem ebeveyn hem de ilk öğe üzerinde
.invalidate()
ve
.requestLayout()
'u aramayı denedim ancak beklendiği gibi çalışmıyor gibi görünüyor.
Ayrıca, <RelativeLayout>
kullanarak üst düzeni değiştirmeyi ve android:layout_above="@+id/cv_price_holder"
'u ilk öğeye ayarlamayı denedim, ancak işe yaramadı.
DÜZENLEME:
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;
}
ilk unsur onun yüksekliğini ikinci eleman değişikliğinin Y konumu ayarlayabilirsiniz böylece soru nasıl düzen yenileyebilirsiniz edilir: Burada düzenini değiştirmek için çağrılan yöntemdir? peşin
Teşekkür
Merhaba Sarthak, yardımlarınız için teşekkürler, ancak hala işe yaramayacağım. Düzeni değiştirirken kullandığım yöntemi eklemek için soruyu düzenledim. Yanlış mı yapıyorum? – qatz
@qatz deneyebileceğiniz tek şey, mMayLayout yerine mCvPriceHolder üzerinde requestLayout çağırmaktır ve geç cevap için özür dilerim ... –