2014-07-10 14 views
5

10'un standart uygulamasıyla birlikte LinearLayoutManager'u deniyorum. Amacım, aygıt dikey yönde iken LayoutManager öğemi yatay olarak çizmeme izin vermek ve aygıt yatay konumda iken dikey olarak çizmektir. Bunun için ben aşağıdaki kodu kullanabilirsiniz Etkinliğimi en onCreate:LinearLayoutManager setTelefon rotasyonundan sonra uyarı çalışma çalışmıyor

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.nextColors); 
recyclerView.setAdapter(myAdapter = new MyAdapter(getBaseContext(), myData, myLayout); 
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); 
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { 
    linearLayoutManager.setOrientation(LinearLayout.HORIZONTAL); 
} else { 
    linearLayoutManager.setOrientation(LinearLayout.VERTICAL); 
} 
recyclerView.setLayoutManager(linearLayoutManager); 
recyclerView.setItemAnimator(new DefaultItemAnimator()); 

cihaz yatay veya dikey modda iken ben aktiviteyi başlatmak gayet iyi çalışır. Ancak, bu etkinlikte yön değiştirmeyi değiştirdiğimde, öğeler ilk olarak etkinlik başlatıldığında cihazın yönüne bağlı olarak her zaman yatay veya dikey olarak çizilir. Bu, cihaz döndürüldükten sonra etkinlik yeniden oluşturulduğundan ve LayoutManager doğru yönlendirmeyi alması gerektiğinden, benim için anlamlı değildir.

setOrientation aygıtın oryantasyon değişiklikleriyle nasıl çalışacağı konusunda bir fikri olan var mı?

+0

Sorununuzu teşhis edebilmek için yeterince kod göstermediniz. Düzeninizi oluşturmak için kullandığınız kodu gösterin. – Squonk

+0

Ne demek istiyorsun? Adaptör RecyclerView'ı destekliyor mu? – Joris

+0

@Squonk Recyclerview ve bağdaştırıcı hakkında daha fazla kod ekledim. – Joris

cevap

4

Bu durum, Kaydedilenler Geri Dönüşümler'de geri yüklenmeden önce yönelimi ayarladığınız için oluyor.

Activity#onPostCreate veya Activity#onResume yönünde bir konum ayarlamayı deneyin (başka bir deyişle, kaydedilen durum geri yüklendikten sonra) böylece kayıtlı durum yönlendirme değerinizi geçersiz kılmaz.

Güncelleştirme 21 sürümünden itibaren, LLM yapılandırma değişikliklerinde yönlenmeyi korumaz, böylece kodunuz gerektiği gibi çalışmalıdır. Kayıtlı durumu önemsemeye gerek yok.

Bu değişiklik, kaydedilmiş durumun değişken durumu kaydetmekten sorumlu olması, yönelim ise geliştiricinin her oluşturulduğunda ayarlamasını bekleyeceğimiz bir yapılandırma olması nedeniyle yapılır.