Kako povezati prilagođeni prikaz sa prilagođenim rasporedom?
sobes.tech АИ
Одговор од АИ
Postoji nekoliko načina:
-
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" /> -
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.xmlmož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
MyCompositeViewmož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.