سؤال

يجب أن يكون سهلا ، أليس كذلك؟ إذن - ها هي كيف لدي ViewSwitcher محددة في XML (المعرف والتخطيطات المحذوفة للإيجاز)

<ViewSwitcher android:layout_height="wrap_content" android:layout_width="fill_parent" >       
    <!-- First view, comes up OK --> 
    <LinearLayout android:id="@+id/header1">
        <!-- some more controls: Progress bar, test view and the button -->
    </LinearLayout>
    <!-- second view. changing to the actual (not include) layout has no effect -->
    <include android:id="@+id/header2" />
</ViewSwitcher>

ثم في مكان ما في رمز Java الخاص بي لدي هذا الرمز

ViewSwitcher switcher = (ViewSwitcher) findViewById(R.id.profileSwitcher);
// more code that basically executes background search
// when call comes back - switch
switcher.bringToFront(); // does nothing
// switcher.bringChildToFront(findViewById(R.id.header2)); // no effect ether

انها مجرد عدم التبديل. أقوم بتطوير API v. 3 (1.5+) وللمفاجأة ، هناك عدد قليل جدًا من الإشارات إلى ViewSwitcher. أنا أفتقد شيئًا واضحًا هنا؟

ملاحظة: لقد اكتشفت للتو القوة الغاشمة أن هذا يعمل:

switcher.setDisplayedChild(1);

لا يزال - لماذا لا حظ مع bringToFront()?

هل كانت مفيدة؟

المحلول

bringToFront() في الواقع لا علاقة له ViewSwitcher, ، تراوحت هذه الطريقة من فئة العرض وتعني التلاعب z-order للعرض الحالي: https://developer.android.com/reference/android/view/view.html#bringtofront ()

عليك أن تستخدم showNext() و showPrevious() الطرق الموروثة من ViewAnimator.

نصائح أخرى

في ViewSwitcher للتنقل بين المشاهدات ، يمكنك استخدام الأساليب showPrevious() و showNext()

أو الاستخدام أيضًا يمكن أن يذهب إلى عرض محدد بواسطة setDisplayedChild(int index) الطريقة حيث يمكن أن يكون الفهرس إما 0 أو 1

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top