SORU
23 NİSAN 2011, CUMARTESİ


ScrollView Program Aracılığıyla Devre Dışı Mı?

ScrollView etkinleştirmek ve Düğmeye bir Tıklama ile devre dışı bırakmak istiyorum.
Devre dışı bırak ScrollView var.. ve bunu sağlamak çocuğun ScrollView.. verir gibi gelir
Ben istiyorum çünkü ben bir galeri ile metin, resimler, ve bir düğmeye basın ekran yönlendirme değişiklikleri, Peyzaj metni daha büyük olur.. Ve istediğim scrollview yani görüntü bakmıyor streç öz ve metin okunmaz hale gelir..
scrollview.Enabled=false / setVisibility(false) xml bir şey.. yapmak bakmıyor:

<ScrollView 
android:id="@ id/QuranGalleryScrollView" 
android:layout_height="fill_parent" 
android:layout_width="fill_parent">
<Gallery android:id="@ id/Gallery" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
android:scrollbars="horizontal"></Gallery>
</ScrollView>

Teşekkürler

Edit1: ben cant kullanmak Görünürlük(gitti) beri de gizlemek Galeri, istediğim gizle etkisi scrollview.. Olduğunda ScrollView görüntüleri Galerisi haline scrollabale ve uyum yani ekran u var gidin bakın bütün görüntü, ben ister devre dışı bırak/etkinleştir düğmesini tıklatın.. denedim bu:

((ScrollView)findViewById(R.id.QuranGalleryScrollView)).setOnTouchListener(null);
                        ((ScrollView)findViewById(R.id.QuranGalleryScrollView)).setHorizontalScrollBarEnabled(false);
                        ((ScrollView)findViewById(R.id.QuranGalleryScrollView)).setVerticalScrollBarEnabled(false);
                        ((ScrollView)findViewById(R.id.QuranGalleryScrollView)).setEnabled(false);

Ama hala Galeride görüntüleri kaydırılan ve.. bunun çözümü ne ekrana sığdırmak?

CEVAP
23 NİSAN 2011, CUMARTESİ


Birkaç puan ile başlamak için:

  1. Bir ScrollView kaydırma devre dışı bırakın. ScrollView uzatmaya gerek ve bazı koşul eşleşen zaman false dönmek onTouchEvent yöntemini geçersiz kılar.
  2. Galeri bileşeni yatay bir ScrollView içinde olup olmadığına bakılmaksızın verilirse - bir ScrollView sadece dikey kaydırma (yatay kaydırma için bir HorizontalScrollView gerekir) sağlar
  3. Görünüyor ki bir sorununuz var görüntü germe kendini bu işle hiç ilgisi yok, ScrollView, sen-ebilmek değiştirmek nasıl bir İmageView pullu android:scaleType özellik (XML) veya setScaleType yöntemi - örnek ScaleType.CENTER olmaz streç görüntü ve irade merkezi de orijinal boyutu

Kaydırma devre dışı bırakmak için aşağıdaki gibi ScrollView değiştirebilir

class LockableScrollView extends ScrollView {

    ...

    // true if we can scroll (not locked)
    // false if we cannot scroll (locked)
    private boolean mScrollable = true;

    public void setScrollingEnabled(boolean enabled) {
        mScrollable = enabled;
    }

    public boolean isScrollable() {
        return mScrollable;
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // if we can scroll pass the event to the superclass
                if (mScrollable) return super.onTouchEvent(ev);
                // only continue to handle the touch event if scrolling enabled
                return mScrollable; // mScrollable is always false at this point
            default:
                return super.onTouchEvent(ev);
        }
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        // Don't do anything with intercepted touch events if 
        // we are not scrollable
        if (!mScrollable) return false;
        else return super.onInterceptTouchEvent(ev);
    }

}

O zaman kullanırsınız

<com.mypackagename.LockableScrollView 
    android:id="@ id/QuranGalleryScrollView" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent">

    <Gallery android:id="@ id/Gallery" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:scrollbars="horizontal">
    </Gallery>

</com.mypackagename.LockableScrollView>

XML dosyası (değişti LockableScrollView özel ScrollView).

Ara o zaman

((LockableScrollView)findViewById(R.id.QuranGalleryScrollView)).setScrollingEnabled(false);

görünümü kaydırma devre dışı bırakmak için.

Bence bu daha önemli bir sorun devre dışı kaydırma olsa ulaşmak istediğiniz sonuç (Galeri kalacak kaydırılan ile yukarıdaki kod örneği) - önerebilirim yaparken biraz daha araştırma her üç bileşeni (Galeri, ScrollView, İmageView) görmek ne özellikleri vardır ve her biri nasıl davranır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jeremy Stark

    Jeremy Stark

    23 Mayıs 2010
  • Matthew Smith

    Matthew Smit

    24 Mayıs 2010
  • xCraash

    xCraash

    6 Temmuz 2012