SORU
16 Temmuz 2012, PAZARTESİ


Ülkeler arasındaki farkın seçilen ve Android kontrol aktif nedir?

Bu ülkelerin farklı bilmek istiyorum. Herhangi bir web sayfası bu açıklama bulamadım.

CEVAP
10 Ocak 2013, PERŞEMBE


Kontrol ve Aktive arasındaki fark aslında oldukça ilginç. Hatta Google belgelerine özür dileyen (aşağıda vurgu eklendi)

... Bir listede örneğin, tek bir görünüm veya birden çok seçimi etkin, geçerli seçimi set görünümleri aktif hale gelir.(Um, Evet, terminoloji hakkında derin bir üzüntü duymaktayız.)Aktif devlet sette olduğu görüş çocuklara yayılır.

İşte fark bu kadar:

  1. Devreye daha önce de kullanabilirsiniz. yani Petek tanıtıldı
  2. Aktif şimdi her bakış bir özellik. Yöntemleri setActivated etti ve isActivated()
  3. Aktif Görünümü üzerinde ayarlanır çocuklar için yayar
  4. İşaretli bir Görünüm işaretlenerek seçilebilir arayüz uygulanması etrafında döner. Yöntemleri () setChecked, isChecked(), toggle()
  5. (Petek sonra) liste görünümü aramalar setChecked() VEYA setActivated() Android sürümü olarak aşağıda (Android kaynak kodundan alınan) göre:

    if (mChoiceMode != CHOICE_MODE_NONE && mCheckStates != null) {
        if (child instanceof Checkable) {
            ((Checkable) child).setChecked(mCheckStates.get(position));
        } else if (getContext().getApplicationInfo().targetSdkVersion
                >= android.os.Build.VERSION_CODES.HONEYCOMB) {
            child.setActivated(mCheckStates.get(position));
        }
    }
    

    Bu mCheckStates değişken unutmayın. Hangi listenizde pozisyonları / aktif kontrol edilir izler. Örneğin, getCheckedİtemPositions üzerinden erişilebilir bu(). Bir liste Görünümü için çağrı unutmayın.() setİtemChecked çağırır yukarıda. Diğer bir deyişle, eşit setİtemActivated denilebilir().

  6. Petek öncesinde geçici çözümler uygulamak listesi öğeler state_checked yansıtmak zorunda kaldık. Bu liste Görünümü çağırır çünkü setChecked() SADECE düzeni (ve düzenleri işaretlenerek seçilebilir uygulamak değil) üst Görünüm ... ve yardım olmadan yaymak DEĞİL. Bu çözümler, aşağıdaki formu vardı: kök düzeni işaretlenerek seçilebilir uygulamak için Uzatın. Kurucusu, özyinelemeli olarak işaretlenerek seçilebilir uygulayan tüm çocukları bulmak. SetChecked() vb... denir, arama bunlar Görüşlerini iletecek. Bu görüşlere state_checked için farklı bir drawable ile devlet listesi drawables (örneğin bir CheckBox) sonra uygularsanız denetlenen durumu UI yansıyor.

  7. Bir güzel arka plan için bir liste öğesi sonra Petek ihtiyacın mı var bir ifade ile bir drawable drawable devlet state_activated gibi bu kullanım setİtemChecked (tabii ki):

    <item android:state_pressed="true"
        android:drawable="@drawable/list_item_bg_pressed"/>
    <item android:state_activated="true"
        android:drawable="@drawable/list_item_bg_activated"/>
    <item android:drawable="@drawable/list_item_bg_normal"/>
    

  8. Bir liste öğesi Petek için önce iyi bir plan yapmak state_checked için yukarıdaki gibi bir şey yapmak istiyorsunuz ve ne DE işaretlenerek seçilebilir arabirimi uygulamak için en üstteki görünümü genişletmek gerek. Daha sonra uygulama devlet onCreateDrawableState uygulayarak doğru veya yanlış olup olmadığını Android söylemek ihtiyacı içinde olan() ve refreshDrawableState arama() zaman durum değişir.

    <item android:state_pressed="true"
        android:drawable="@drawable/list_item_bg_pressed"/>
    <item android:state_checked="true"
        android:drawable="@drawable/list_item_bg_checked"/>
    <item android:drawable="@drawable/list_item_bg_normal"/>
    

... ve uygulamak için kodu işaretlenerek seçilebilir bir RelativeLayout içinde state_checked olabilir ile birlikte

public class RelativeLayoutCheckable extends RelativeLayout implements Checkable {

    public RelativeLayoutCheckable(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public RelativeLayoutCheckable(Context context) {
        super(context);
    }

    private boolean mChecked = false;

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();
    }
    @Override
    public boolean isChecked() {
        return mChecked;
    }

    @Override
    public void setChecked(boolean checked) {
        mChecked = checked;
        refreshDrawableState();
    }

    private static final int[] mCheckedStateSet = {
        android.R.attr.state_checked,
    };

    @Override
    protected int[] onCreateDrawableState(int extraSpace) {
        final int[] drawableState = super.onCreateDrawableState(extraSpace   1);
        if (isChecked()) {
            mergeDrawableStates(drawableState, mCheckedStateSet);
        }
        return drawableState;
    }    

    @Override
    public void toggle() {
        setChecked(!mChecked);
    }
}

Aşağıdaki için teşekkürler

http://sriramramani.wordpress.com/2012/11/17/custom-states/

Stackoverflow: Android: how to add a custom button state

Stackoverflow: Custom Checkable View which responds to Selector

http://www.charlesharley.com/2012/programming/custom-drawable-states-in-android/

http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

http://blog.marvinlabs.com/2010/10/29/custom-listview-ability-check-items/

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dirkgently1

    dirkgently1

    13 NİSAN 2006
  • Fubar Protocol

    Fubar Protoc

    21 AĞUSTOS 2010
  • TheDigiCraft

    TheDigiCraft

    25 NİSAN 2011