Middle
Kā saistīt lietotāja skatu ar lietotāja izkārtojumu?
sobes.tech AI
Atbilde no AI
Ir vairākas veidi:
-
Izmantot konstruktoru ar atribūtu kopu
AttributeSet: Tas ir visbiežāk izmantotais veids. Konstruktorā var nolasīt atribūtus no XML un tos piemērot.public class MyCustomView extends View { public MyCustomView(Context context, AttributeSet attrs) { super(context, attrs); // Nolasīt atribūtus no attrs TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView); // Saņemt atribūtu vērtības, piemēram: // int someValue = a.getInt(R.styleable.MyCustomView_someAttribute, defaultValue); a.recycle(); // Ir svarīgi atbrīvot TypedArray // Iniciēt View, balstoties uz nolasītajiem atribūtiem // ... } // ... citi konstruktori un metodes }Definējot XML layout, var izmantot šos atribūtus:
<com.example.app.MyCustomView android:layout_width="wrap_content" android:layout_height="wrap_content" app:someAttribute="someValue" /> -
Layout inflācija iekšā View: Ja View sastāv no vairākām citām View, tās var inflēt no atsevišķa XML faila iekšā savā View.
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); // Tagad var atrast elementus iekšā my_custom_layout // TextView myTextView = findViewById(R.id.myTextView); // ... } // ... citi konstruktori un metodes }my_custom_layout.xmlvar izskatīties šādi:<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!" /> <!-- citi elementi --> </LinearLayout>Tad šis
MyCompositeViewvar tikt izmantots citā XML failā:<com.example.app.MyCompositeView android:layout_width="match_parent" android:layout_height="wrap_content" />
Izvēle ir atkarīga no jūsu View sarežģītības: vienkāršiem View pietiek ar pirmo metodi, bet sarežģītākiem View ar iekšējo struktūru ir piemērotāka otra.