Styles dialog boxes and menus
This presentation is the property of its rightful owner.
Sponsored Links
1 / 28

Styles, Dialog Boxes, and Menus PowerPoint PPT Presentation


  • 138 Views
  • Uploaded on
  • Presentation posted in: General

Styles, Dialog Boxes, and Menus. Styles. Styles. Allow creation of a common format placed in res/values/styles.xml file name is incidental Can be applied to multiple widgets, layouts, etc. When applied to layout, contained widgets are not affected

Download Presentation

Styles, Dialog Boxes, and Menus

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Styles dialog boxes and menus

Styles, Dialog Boxes, and Menus


Styles

Styles


Styles1

Styles

  • Allow creation of a common format

    • placed in res/values/styles.xml

    • file name is incidental

  • Can be applied to multiple widgets, layouts, etc.

    • When applied to layout, contained widgets are not affected

    • If applied to different kinds of widgets, attributes that do not apply are simply ignored

  • One style can inherit another

    • attributes can be overridden

  • Can be used to set a theme at the application or activity level


Example

Example

In styles.xml:

<?xml version="1.0" encoding="utf-8"?>

<resources>

<style name=“myStyle">

<item name="android:layout_width">wrap_content</item>

<item name="android:layout_height">wrap_content</item>

<item name="android:textColorHint">#FF0000</item>

</style>

</resources>

In Activity’s corresponding .xml file:

<TextView

style="@style/myStyle"

android:text="I am using a style template"

android:id="@+id/tvStyling "

/>


Example of inheritance

Example of Inheritance

Added to styles.xml:

<style name="myInheritingStyle" parent="myStyle">

<item name="android:textColorHint">#0000FF</item>

<item name="android:layout_marginTop">20dp</item>

</style>

In Activity’s corresponding .xml file:

<TextView

style="@style/myInheritingStyle"

android:text="I am using an inheriting style template"

android:id="@+id/tvInheriting "

/>


Example of a theme

Example of a theme

In styles.xml:

<style name="myCustomTheme" parent="android:Theme.Light">

<item name="android:colorBackground">#0F0F0F</item>

</style>

In Manifest file (as an attribute of either the Activity or Application):

android:theme="myCustomTheme"


Dialog boxes

Dialog Boxes


Dialog boxes1

Dialog boxes

  • Presents information to the screen

    • error message

    • confirmation of a process

    • other

  • Overlays another Activity

    • usually translucent and modal


Dialog boxes2

Dialog Boxes

  • Can be created in XML or programmatically

    • if created in XML:

      • use an Activity with the Dialog theme

      • onPause and onResume of parent fired off

      • advantage: can be as robust as needed

      • disadvantage: relatively unwieldy to pass information back from Dialog

    • if created programmatically

      • use AlertDialog class

      • no focus events fired off

      • advantage: low overhead and access to all class entities

      • disadvantage: interface is limited


Creating a dialogbox via xml

Creating a DialogBox via xml


Creating dialogbox via xml

Creating DialogBox via xml

  • Create an Activity with DialogBox theme

    • In Manifest file:

      <activity

      android:name=".Dialog"

      android:label="Data Entry Error"

      android:theme="@android:style/Theme.Dialog">

      </activity>


Creating dialogbox via xml1

Creating DialogBox via xml

  • Component is technically an Activity, and all requirements remain the same

    • Manifest file entry, .xml file, and .java file

    • launched via the startActivity() method in parent Activity

      • intent must be created

    • Dialog Activity presented modally ‘in front’ of parent activity

    • Using an Activity with the Dialog theme allows for added functionality


Creating dialogbox via xml2

Creating DialogBox via xml

  • openXMLDialog below is an example of a method within the main Activity

    public void openXMLDialog () {

    Intent i = new Intent(this, XMLDialog.class);

    startActivity(i);

    }


Creating a dialogbox programmatically

Creating a DialogBox programmatically


Creating dialogbox programmatically

Creating DialogBox programmatically

  • Component is created within the current Activity

    • No Manifest file entry, .xml file, or .java file

    • launched via the show() method in AlertDialog class (from a method in the parent Activity)

    • Dialog Activity presented modally ‘in front’ of parent activity

      • setCancelable method determines if user can cancel the Dialog via the back button on the device

    • Minimal effort, minimal functionality


Creating dialogbox programmatically1

Creating DialogBox programmatically

  • Can use one, two, or three buttons

    • all buttons automatically dismiss the dialog after corresponding code is executed

    • buttons appear right to left in following order

      • positive

      • neutral

      • negative

  • No difference between the three

  • If none are chosen, program will be stuck with the modal dialog box

    • no build errors


Creating dialogbox programmatically2

Creating DialogBox programmatically

public void inputError() {

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setCancelable(false);

builder.setTitle("Data entry error");

builder.setMessage("Please enter a positive number in the number field");

builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

//Functionality goes here

}

});

((EditText)findViewById(R.id.etNumField)).requestFocus();

AlertDialog alert = builder.create();

alert.show();

}


Menus

Menus


Menus1

Menus

  • Can be created in xml or programmatically

    • If created in .xml, placed in res\menu\ folder

  • Menu displayed by means of menu key on phone

  • Must override the following methods in Activity

    • onCreateOptionsMenu

      • creates the menu

      • ‘inflates’ xml code or programmatically creates menu

    • onOptionsItemSelected

      • provide the functionality to the menu


Creating a menu via xml

Creating a menu via xml


Creating a menu using xml

Creating a menu using xml

  • This xml file would reside in the res\menu folder

    <menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item

    android:id="@+id/mi1"

    android:title="First"

    android:orderInCategory="1“

    android:showAsAction="never"

    />

    <item

    android:id="@+id/mi2"

    android:title="Second"

    android:orderInCategory="2“

    android:showAsAction="never"

    />

    </menu>


Creating a menu using xml1

Creating a menu using xml

  • onCreateOptionsMenu() overridden in the corresponding Activity

    • called only once – first time menu is displayed

      • onPrepareOptionsMenu is called every time menu is displayed

    • here ‘choices’ reflects the name of the menu xml file

    • a return value of true allows the menu to be shown

      @Override

      public booleanonCreateOptionsMenu(Menu menu) {

      getMenuInflater().inflate(R.menu.choices, menu);

      return true;

      }


Oncreateoptionsmenu

onCreateOptionsMenu

  • return value

    • true

      • menu can displayed

    • false

      • menu cannot display

  • Scenario

    • When Activity is displayed, may want the Menu available under certain conditions and not otherwise

      if (condition met)

      return true;

      else

      return false;


Creating a menu using xml2

Creating a menu using xml

  • onOptionsItemSelected() overridden in the corresponding Activity

    • Here ‘miX’ reflects the name of the menu item in the xml file

      @Override

      public booleanonOptionsItemSelected(MenuItem item) {

      switch(item.getItemId()) {

      case (R.id.mi1):

      //Functionality here

      case (R.id.mi2):

      //Functionality here

      }

      return true;

      }


Onoptionsmenuitem

onOptionsMenuItem

  • return value

    • true

      • consume menu processing here

      • will not call super class’ onOptionsMenuItem

    • false

      • will call super class’ onOptionsMenuItem

  • Scenario

    • May have one activity that implements the menu, and others that subclass it

      • if subclass handles subset of cases, handle those and return false in any case that is not handled


Creating a menu programmatically

Creating a menu programmatically


Creating a menu programmatically1

Creating a menu programmatically

  • onCreateOptionsMenu() overridden in the corresponding Activity

    • Each menu item added via the ‘add’ method in the Menu class

      • parameters are:

        • group id, item id, order, title

        • group id useful if actions need to be taken on a group of items

          • removeGroup(), setGroupVisible(), etc.

        • item id is the unique id (value returned by getItemId())

        • items will appear in numerical order by order parameter

          public booleanonCreateOptionsMenu(Menu menu) {

          menu.add(Menu.NONE, 1, 1, "First");

          menu.add(Menu.NONE, 2, 2, "Second");

          return true;

          }


Creating a menu programmatically2

Creating a menu programmatically

  • onOptionsItemSelected() overridden in the corresponding Activity

    • getItemId() matches those set in onCreateOptionsMenu()

      @Override

      public booleanonOptionsItemSelected(MenuItem item) {

      switch(item.getItemId()) {

      case 1:

      //Functionality here

      case 2:

      //Functionality here

      }

      return true;

      }


  • Login