Overview
This guide demonstrates how to use native Android XML layouts in Titanium by loading them via Hyperloop. Example views are the RecyclerView, BottomNavigationView and FloatingActionButton.
Usage
1. Create a new XML layout (like `main_content.xml`) in "app/platform/android/res/layout" (Alloy) or "platform/android/res/layout" (Classic). Example:
< android.support.design.widget.CoordinatorLayout android:id = "@+id/main_content" android:theme = "@style/Theme.AppCompat.Light" android:layout_width = "match_parent" android:layout_height = "match_parent" > < ListView android:id = "@+id/lvToDoList" android:layout_width = "match_parent" android:layout_height = "match_parent" /> < android.support.design.widget.FloatingActionButton android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_gravity = "bottom|right" android:layout_margin = "16dp" android:src = "@drawable/ic_action_share" app:layout_anchor = "@id/lvToDoList" app:layout_anchorGravity = "bottom|right|end" /> </ android.support.design.widget.CoordinatorLayout > |
2. Create an `LayoutInflater` class to inflate layouts (ES6+ style here):
import Context from 'android.content.Context' ; import Inflater from 'android.view.LayoutInflater' ; const inflater = Inflater.cast(activity.getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)); |
3. Receive the R.layout.* ID required to inflate its view:
import Activity from 'android.app.Activity' ; const activity = new Activity(Ti.Android.currentActivity); // 'main_content' = file name, 'layout' = resource, e.g. app/platform/android/res/layout // Can also be used to receive other R.* values like R.color.*, R.string.*
etc. const resID = activity.getResources().getIdentifier( 'main_content' , 'layout' , activity.getPackageName()); |
4. That's it! Inflate the view and add it to your Titanium view:
const view = inflater.inflate(resIDFromString( 'main_content' , 'layout' ), null ); myView.add(view); |
Output
Here is an example of using the previous code to load a FloatingActionButton inside a CoordinatorLayout:
Full Example
For a full example and many other native examples, see the Hyperloop Sample App for details.