Πώς να συνδέσετε μια προσαρμοσμένη προβολή με μια προσαρμοσμένη διάταξη;
sobes.tech AI
Απάντηση από AI
Υπάρχουν διάφοροι τρόποι:
-
Χρήση του κατασκευαστή με ένα σύνολο ιδιοτήτων
AttributeSet: Αυτός είναι ο πιο συνηθισμένος τρόπος. Στον κατασκευαστή της View, μπορείτε να διαβάσετε τις ιδιότητες από την XML σήμανση και να τις εφαρμόσετε.public class MyCustomView extends View { public MyCustomView(Context context, AttributeSet attrs) { super(context, attrs); // Ανάγνωση ιδιοτήτων από attrs TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView); // Απόκτηση τιμών ιδιοτήτων, π.χ.: // int someValue = a.getInt(R.styleable.MyCustomView_someAttribute, defaultValue); a.recycle(); // Είναι σημαντικό να ελευθερώσετε το TypedArray // Αρχικοποίηση της View βάσει των διαβασμένων ιδιοτήτων // ... } // ... άλλοι κατασκευαστές και μέθοδοι }Κατά τον ορισμό ενός προσαρμοσμένου layout σε XML, μπορείτε να χρησιμοποιήσετε αυτές τις ιδιότητες:
<com.example.app.MyCustomView android:layout_width="wrap_content" android:layout_height="wrap_content" app:someAttribute="someValue" /> -
Ενίσχυση του layout μέσα στη View: Αν η View αποτελείται από πολλές άλλες View, μπορείτε να τις ενισχύσετε από ένα ξεχωριστό αρχείο XML μέσα στην προσαρμοσμένη 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); // Τώρα μπορείτε να βρείτε στοιχεία μέσα στο my_custom_layout // TextView myTextView = findViewById(R.id.myTextView); // ... } // ... άλλοι κατασκευαστές και μέθοδοι }Το
my_custom_layout.xmlμπορεί να μοιάζει έτσι:<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="Γειά σου, προσαρμοσμένη διάταξη!" /> <!-- άλλα στοιχεία διάταξης --> </LinearLayout>Στη συνέχεια, αυτή η προσαρμοσμένη διάταξη
MyCompositeViewχρησιμοποιείται σε ένα άλλο αρχείο XML:<com.example.app.MyCompositeView android:layout_width="match_parent" android:layout_height="wrap_content" />
Η επιλογή της μεθόδου εξαρτάται από την πολυπλοκότητα της προσαρμοσμένης View: για απλές View με ελάχιστα στοιχεία, αρκεί η πρώτη μέθοδος. Για σύνθετες View με πιο πολύπλοκη εσωτερική δομή, η δεύτερη μέθοδος είναι πιο κατάλληλη.