2016-04-05 25 views
0

RelativeLayout'u genişleten özel bir görünümüm var. ŞimdiKullanıcı girdisine bağlı olarak bir CustomView düzeninin ayarlanması

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:verizon="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" 
android:layout_margin="5dp"> 

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center"> 

    <ImageView 
     android:id="@+id/flag" 
     android:layout_width="60dp" 
     android:layout_height="160dp" 
     android:layout_below="@id/txt" 
     android:layout_gravity="center" 
     android:layout_margin="5dp" /> 

</FrameLayout> 

    <com.widgets.FreeBeeNotificationView 
     android:id="@+id/freebee_pre_session_view" 
     android:layout_width="wrap_content" 
     android:layout_height="35dp" 
     android:layout_gravity="right|top" 
     android:layout_marginBottom="6dp" 
     android:layout_marginRight="6dp" 
     android:layout_marginTop="6dp" 
     verizon:textSize="12sp" /> 

</FrameLayout> 

: Böyle bir liste öğesi bu özel bir görünüm kullanıyorum

inflate(getContext(), R.layout.in_session_view_layout, this); 

: init olarak (Bağlam bağlamda, öznitelik attrs) Bu sınıfın yöntem ben tarafından düzen dosyasını ayarlamak gereksinim, bu düzen dosyasının, kullanıcı girişine dayalı olarak dinamik olarak özel görünümde ayarlanması gerektiğidir. Ancak, kullanıcı girdisini, özel görünümün init() yönteminin, yukarıda verilen FrameLayout öğesinin yüklendiği anda çağrılırken çağrılmasından sonra aldım.

Düzen dosyasını, kullanıcı girdisini temel alarak özel görünümde nasıl dinamik olarak ayarlayabilirim? Birisi bana yardım edebilir.

Teşekkürler.

+0

İlk önce R.layout.in_session_view_layout'u şişirmeniz gerekiyor mu ve kullanıcı girişi geldiğinde başka bir düzende şişirdiğinizde veya kullanıcı girdisi geldikten sonra sadece R.layout.in_session_view_layout'u şişirmeniz gerekiyor mu? –

+0

2 çeşit düzenim var: R.layout.in_session_view_layout_1 ve R.layout.in_session_view_layout. Kullanıcı girişi geldikten sonra görünümde şişirilmesi gerekiyor. – user2284140

cevap

1

Umarım gereğini doğru anladım. Eğer daha fazla açıklamıyorsanız lütfen. Bunu yapabilirsiniz. Özel görünümünde

setLayout adlı bir yöntem (int layoutId) Eğer kullanıcı girişi olduğunda

public void setLayout(int layoutId) 
{ 
    removeAllViews(); 
    LayoutInflater inflater = LayoutInflater.from(getContext()); 
    inflater.inflate(getContext(), layoutId, this); 
} 

aramak yapmak

yourCustomView.setLayout(R.layout.new_layout); 

Destek Tüm bu bellekten ve test edilmedi bu yüzden derlemeyebilir.

+0

Yani, init() yönteminde, düzen dosyasından birini ayarlayacağım. Daha sonra, kullanıcı girişine bağlı olarak önceki düzeni geçersiz kılın; setLayout yöntemini kullanarak sağa? – user2284140

+0

evet, removeAllViews, özel göreli düzeninizin tüm alt görünümlerini kaldırır, böylece yeni bir düzen ekleyebileceğiniz temiz bir görüntüleme grubunuz olur. Karmaşık mantık gerektirmeyen bazı statik düzenleri kullanıyorsanız, bunun beklenen şekilde çalışması gerektiğini unutmayın. Daha karmaşık senaryolar için, gereksiniminize bağlı olarak bir ViewPager veya ViewFlipper veya başka birisini kullanmak isteyebilirsiniz. –

+0

Teşekkürler! Sen bir kurtarıcısın! İşe yaradı . – user2284140