Middle
Kaip susieti naudotojo peržiūrą su naudotojo išdėstymu?
sobes.tech AI
Atsakymas iš AI
Yra keletas būdų:
-
Naudoti konstruktorių su atributų rinkiniu
AttributeSet: Tai yra dažniausiai naudojamas būdas. Konstruktoriuje galima perskaityti atributus iš XML ir juos taikyti.public class MyCustomView extends View { public MyCustomView(Context context, AttributeSet attrs) { super(context, attrs); // Skaityti atributus iš attrs TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView); // Gauti atributų reikšmes, pvz.: // int someValue = a.getInt(R.styleable.MyCustomView_someAttribute, defaultValue); a.recycle(); // Svarbu išlaisvinti TypedArray // Inicijuoti View remiantis perskaitytais atributais // ... } // ... kiti konstruktoriai ir metodai }Apibrėžus XML layout, galima naudoti šiuos atributus:
<com.example.app.MyCustomView android:layout_width="wrap_content" android:layout_height="wrap_content" app:someAttribute="someValue" /> -
Inflate layout viduje View: Jei View sudarytas iš kelių kitų View, juos galima inflatinti iš atskiro XML failo viduje savo 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); // Dabar galima rasti elementus viduje my_custom_layout // TextView myTextView = findViewById(R.id.myTextView); // ... } // ... kiti konstruktoriai ir metodai }my_custom_layout.xmlgali atrodyti taip:<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!" /> <!-- kiti elementai --> </LinearLayout>Tada šis
MyCompositeViewgali būti naudojamas kitu XML faile:<com.example.app.MyCompositeView android:layout_width="match_parent" android:layout_height="wrap_content" />
Pasirinkimas priklauso nuo jūsų View sudėtingumo: paprastiems View pakanka pirmojo būdo, o sudėtingesniems – antrojo.