Sobes.tech
Middle

Kako povezati prilagođeni prikaz sa prilagođenim rasporedom?

sobes.tech АИ

Одговор од АИ

Postoji nekoliko načina:

  1. Korišćenje konstruktora sa skupom atributa AttributeSet: Ovo je najčešći način. U konstruktoru View možete pročitati atribute iz XML-a i primeniti ih.

    public class MyCustomView extends View {
    
        public MyCustomView(Context context, AttributeSet attrs) {
            super(context, attrs);
            // Čitanje atributa iz attrs
            TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView);
            // Dobijanje vrednosti atributa, na primer:
            // int someValue = a.getInt(R.styleable.MyCustomView_someAttribute, defaultValue);
            a.recycle(); // Važno je osloboditi TypedArray
    
            // Inicijalizacija View na osnovu pročitanih atributa
            // ...
        }
    
        // ... drugi konstruktori i metode
    }
    

    Pri definisanju prilagođenog layout-a u XML-u, možete koristiti ove atribute:

    <com.example.app.MyCustomView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:someAttribute="someValue" />
    
  2. Inflacija layout-a unutar View: Ako View sastoji od više drugih View-ova, oni se mogu inflatovati iz posebnog XML fajla unutar vašeg prilagođenog View-a.

    public class MyCompositeView extends LinearLayout {
    
        public MyCompositeView(Context context, AttributeSet attrs) {
            super(context, attrs);
            LayoutInflater.from(context).inflate(R.layout.my_custom_layout, this, true);
            // Sada možete pronaći elemente unutar my_custom_layout
            // TextView myTextView = findViewById(R.id.myTextView);
            // ...
        }
    
        // ... drugi konstruktori i metode
    }
    

    my_custom_layout.xml može izgledati ovako:

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    
        <TextView
            android:id="@+id/myTextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Hello Custom Layout!" />
    
        <!-- ostali elementi rasporeda -->
    
    </LinearLayout>
    

    Zatim, ovaj prilagođeni layout MyCompositeView može biti korišćen u drugom XML fajlu:

    <com.example.app.MyCompositeView
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    

Izbor metode zavisi od složenosti prilagođenog View-a: za jednostavne View sa minimalnim brojem elemenata, dovoljan je prvi način, za složenije View sa unutrašnjom strukturom, prikladniji je drugi.