Използване на include XML при Android приложения

Здравейте,

В следващия пост ще покажа как и в кои случаи е добре да се използва include атрибута от XML layout файловете.

Предполагам знаете, че XML layout файловете (т.е. файловете в които се описва графичната част на Вашите приложения) се намират в директорията layout. Много често може да се случи даден компонент да се повтаря няколко пъти в приложението. Например искаме да имаме брояч с бутони нагоре надолу и този брояч да се показва в няколко Activity.

Както при писането на код (чрез методи – функции) така и тук при изработването на изгледите (layouts) има начин повтарящите се кодове да се преизползват. Този начин е чрез използването на  include.

За целта ще създадем нов XML файл (numeric_stepper.xml)  в директорията layout  като този файл ще съдържа само елементи необходими за построяване на брояч (numeric_stepper). Ето как може да изглежда един такъв брояч.

numeric stepper

 

 

 

 

 

 

За да построим този брояч в нашия layout, ще ни трябват следните стандартни Android елементи: 1 елемент EditText  и 2 елемента Button. Ето и кода на numeric_stepper.xml:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizonal" />
<EditText
android:id="@+id/stepper_value"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.6"
android:hint="Enter value"
android:inputType="number"
</EditText>
<TableLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.4">
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id=@+id/up
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id=@+id/down
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
</TableRow>
</TableLayout>
</LinearLayout>

За да използваме този създаден от нас графичен компонент, в
изглед (например mainlayout.xml) на едно Activity (например за MainActivity.java), може да напишем в layout файла mainlayout.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width=”match_parent” 
android:layout_height=”match_parent” 
android:gravity="center_horizontal">
<include 
android:id=”@+id/numeric_stepper” 
android:layout_width=”match_parent” 
android:layout_height=”match_parent” 
layout=”@layout/numeric_stepper”/>
 <TextView 
android:layout_width=”match_parent” 
android:layout_height="wrap_content"
android:text="@string/hello"
android:padding="10dp" /> 
...
</LinearLayout>

По този начин на мястото на include тага Android ще постави всички
компонентите дефинирани в numeric_stepper.xml. Ако желаем същия този
наш компонент може да бъде използван и в други Activity
изграждащи приложението, а дори нещо повече може да бъде използван
и в същото Activity, но на друго място.
 И накрая искам да Ви покажа как да достъпвате елементите
изграждащи нашият компонент. Например за да достъпим и инициализираме
бутона с id = "up", в кода на Activity-то, което го използва
трябва да се напише:
View includeView = findViewById(R.id.numeric_stepper);
Button up = (Button) includeView.findViewById(R.id.up);
 Първо се инициализира обекта съдържащ нашия компонент и след това с
негова помощ се инициализира бутона "up".
Надявам се съм бил полезен и съм дал поводи за коментари!!!

Leave a Reply

Your email address will not be published. Required fields are marked *