-
Notifications
You must be signed in to change notification settings - Fork 36
Action bar
Neko provides tools to create Android action bar (UI element that
was introduced in Android Honeycomb). Relevant functions can be
found in neko.action-bar namespace.
The primary function for making an action bar is
setup-action-bar. It takes an activity and attribute map to
configure the desired look and functionality. You usually want to
call this function from activity’s onCreate method. For example:
(defactivity org.test.neko.MainActivity
:key :main
(onCreate [this bundle]
...
(on-ui
(setup-action-bar this
{:title "Custom title"
:icon android.R$drawable/btn_star_big_on
:display-options [:show-home :show-title :home-as-up]
:subtitle "Custom subtitle"}))))And here is how it looks like.
-
:title, :subtitle- strings to set title and subtitle of the action bar; -
:display-options- parameters to configure how action bar should look like and behave. Can be either a single keyword or a vector of keywords from::home-as-up,:show-home,:show-custom,:show-title,:use-logo; -
:icon- either a Drawable or resource ID; -
:navigation-mode- can be either:standard,:listor:tabs;:tabs- if:tabswere selected as navigation mode, this attributes should be a value of tab definitions.
Creation of tabs can also be done with Clojure data structures using
:tab widget. It has the following attributes:
-
:text- title of the tab, should be a string; -
:tab-listener- an ActionBar.TabListenerlistener object that reacts to tab-related actions.
Now, rather than creating listener object manually, you can use
tab-listener function that takes key-value pairs of
:on-tab-selected, :on-tab-unselected and :on-tab-reselected.
Each of this functions take two arguments - the tab and the
FragmentTransaction object.
(setup-action-bar this
{...
:navigation-mode :tabs
:tabs [
[:tab {:text "Alpha"
:tab-listener (tab-listener
:on-tab-selected (fn [tab ft]
(toast a "alpha")))}]
[:tab {:text "Beta"
:tab-listener (tab-listener
:on-tab-selected (fn [tab ft]
(toast a "beta")))}]]})There is even simpler method if the only thing you want from tabs
is to change the underlying fragment being shown. You can provide
:tab-listener with a fragment and the listener will be
automatically created that handles showing/hiding of this
fragment. See Fragments for more information on fragment creation.
{...
:tabs [
[:tab {:text "Alpha"
:tab-listener (simple-fragment this
[:text-view {:text "Default text"
:text-size [30 :dp]}])}]
[:tab {:text "Beta"
:tab-listener (simple-fragment this
[:linear-layout {:orientation :vertical}
[:button {:text "Default button"}]])}]]}Namespaces
- neko.action-bar
- neko.activity
- neko.context
- neko.data
- neko.data.shared-prefs
- neko.debug
- neko.dialog.alert
- neko.find-view
- neko.intent
- neko.listeners
- neko.log
- neko.notify
- neko.resource
- neko.threading
- neko.ui
- neko.ui.mapping
- neko.ui.listview
- neko.ui.adapters
User interface
Action bar
SQLite
Logging

