Yerleşim düzeni içine nasıl dahil edilir?


Yanıtlar:


198

Düzenleme: Bir yorumda olduğu gibi haklı olarak burada biraz daha bilgi istenir. includeEtiketi kullanın

<include
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   layout="@layout/yourlayout" />

yeniden kullanmak istediğiniz düzeni eklemek için.

Bu bağlantıya göz atın ...


11
sadece küçük bir ayrıntı: android yerine android: layout_width = "match_parent" kullanın: layout_width = "fill_parent". fill_parent kullanımdan kaldırıldı.
Trinity

1
Bir düzeni ekleyebilir ve bazı özelliklerini xml aracılığıyla ayarlayabilir miyim, örneğin, alt düzende doğrudan <include> etiketinde bir metin dizesi belirleyebilir miyim?
JohnyTex

@JohnyTex Bunu doğrudan <include />etiketin içinde yapıp yapamayacağınızdan emin değilim , ancak java kodunu kullanarak yapabilirsiniz. bkz aşağıda Phileo99 yanıtını dahil düzeni bir başvuru nasıl bilmek. ve sonra içeriğini değiştirebilirsiniz.
Musa

58

Eğer eklerseniz o Not android:id...içine <include />etiketi, o dahil layout'ta tanımlandı ne olursa olsun kimliği geçersiz kılar. Örneğin:

<include
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/some_id_if_needed"
   layout="@layout/yourlayout" />

yourlayout.xml:

<LinearLayout
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/some_other_id">
   <Button
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:id="@+id/button1" />
 </LinearLayout>

Ardından, bu dahil edilen düzene kodda aşağıdaki gibi başvurursunuz:

View includedLayout = findViewById(R.id.some_id_if_needed);
Button insideTheIncludedLayout = (Button)includedLayout.findViewById(R.id.button1);


6

Bunu dene

<include
            android:id="@+id/OnlineOffline"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            layout="@layout/YourLayoutName" />

3

Düzenlerin Yeniden Kullanılmasıyla ilgili Resmi belgelerden

Android, küçük ve yeniden kullanılabilir etkileşimli öğeler sağlamak için çeşitli pencere öğeleri sunsa da, özel bir düzen gerektiren daha büyük bileşenleri yeniden kullanmanız gerekebilir. Tüm mizanpajları verimli bir şekilde yeniden kullanmak için, mevcut mizanpajın içine başka bir mizanpaj eklemek için etiketini kullanabilirsiniz.

İşte benim olduğu header.xml i kullanarak yeniden kullanabilirsiniz dosya etiketi dahil

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    >


    <TextView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:text="@string/app_name"
        android:textColor="#000000" />

</RelativeLayout>

Hayır kullanıyorum başka bir XML dosyasından başka bir düzen eklemek için XML'de etiketleyin.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#f0f0f0" >


    <include
        android:id="@+id/header_VIEW"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        layout="@layout/header" />

        <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:background="#ffffff"
        android:orientation="vertical"
        android:padding="5dp" >


    </LinearLayout>

TextView'i neden kök görünüm olarak değil de RelativeLayout'a yerleştirelim?
Florian Walther

@FlorianWalther Bu bir örnek
IntelliJ Amiya

Hızlı cevabınız için teşekkür ederim. Ancak TextView'ı kök öğe olarak koyabileceğim konusunda haklı mıyım yoksa bir şeyi mi kaçırıyorum? Çünkü bir ProgressBar'ı yeniden kullanmak ve onu bir düzene koymam gerekip gerekmediğini merak ediyorum.
Florian Walther

@FlorianWalther Because I want to reuse a ProgressBarne sorun geliyor?
IntelliJ Amiya

Sorun yok, çalışıyor. Ancak çevrimiçi gördüğüm tüm örnekler, tek bir widget'ı başka bir düzene koydu ve nedenini merak ediyorum.
Florian Walther

0

Bu bağlantıyı kullanarak Daha Fazla Bilgi Edinin https://developer.android.com/training/improving-layouts/reusing-layouts.html

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".Game_logic">
    
          
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:id="@+id/text1"
                    android:textStyle="bold"
                    tools:text="Player " />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textStyle="bold"
                    android:layout_marginLeft="20dp"
    
                    android:id="@+id/text2"
                    tools:text="Player 2" />
          
            
          
        </LinearLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>

Blok alıntı

  • Düzenin üstünde, diğer aktivitelerde kullanabileceğiniz

     <?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
                      xmlns:app="http://schemas.android.com/apk/res-auto"
                      xmlns:tools="http://schemas.android.com/tools"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      tools:context=".SinglePlayer">   
    
              <include layout="@layout/activity_game_logic"/> 
          </androidx.constraintlayout.widget.ConstraintLayout>
    
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.