Android Tutorial Material Design 2 - Using the AppCompat library

Discussion in 'Tutorials & Examples' started by corwin42, Dec 19, 2014.

  1. corwin42

    corwin42 Expert Licensed User

    Seems that you have an old android-support.v4.jar in you custom libs folder. Did you update the support library in SDK Manager and copied both libraries (android-support-v4.jar and android-support-v7-appcompat.jar) to your custom libs folder? Check that you don't have an old version of the libraries in Basic4Android program folder.
     
  2. migrec

    migrec Member Licensed User

    That was it! thank you
     
  3. AscySoft

    AscySoft Active Member Licensed User

    Is there a way to change the "textcolorPrimary" attribute?
     
  4. corwin42

    corwin42 Expert Licensed User

    Not programatically. Just put it in the Theme file like the other colors.
     
  5. AscySoft

    AscySoft Active Member Licensed User

    I did before asking
    This is how it ends:
    Error: No resource found that matches the given name: attr 'textcolorPrimary'
     
  6. shashkiranr

    shashkiranr Active Member Licensed User

    Hi All,

    The activity home click is not recorded when no activity menu item is added. I have taken the below code from the example and commented the activity.addmenu and lines and made the pcontent as a scrollview.

    I need an activity with just the up indicator and the click is not captured.

    Code:
    Sub Process_Globals
        
    'These global variables will be declared once when the application starts.
        'These variables can be accessed from all modules.
    End Sub

    Sub Globals
        
    'These global variables will be redeclared each time the activity is created.
        'These variables can only be accessed from this module.

        
    Dim AC As AppCompat
        
    Dim ABHelper As ACActionBar
        
    Private ActionBar As ACToolBarLight
        
    Private pContent As ScrollView
        
    Private cbABVisible As ACCheckBox
        
    Private cbABShadow As ACCheckBox
        
    Private cbShowAsUp As ACCheckBox
        
    Private edTitle As ACEditText
        
    Private edSubTitle As ACEditText
        
    Private cbShowLogo As ACCheckBox

    End Sub

    Sub Activity_Create(FirstTime As Boolean)
        
    'Do not forget to load the layout file created with the visual designer. For example:
        Activity.LoadLayout("main")

        
    'Set the Toolbar (from the loaded layout) as the ActionBar of this activity.
        ActionBar.SetAsActionBar

        
    'Set Title and Subtitle for the Toolbar
        ActionBar.Title = "AppCompat"
        ActionBar.SubTitle = 
    "Toolbar Example 1"
       
        
    'Because the Toolbar is part of out layout we split up our layout in a main layout file
        '(which only has the Toolbar and a ContentPanel) and a content layout which has all the
        'visible controls.
    '    pContent.LoadLayout("cardlayout")
    '    pContent.Panel.LoadLayout("cardlayout")
        pContent.Panel.LoadLayout("content")
        
    'sync the controls with current state of ActionBar/Toolbar
        cbABVisible.Checked = True
        edTitle.Text = ActionBar.Title
        edTitle.Hint = 
    "Title"
        edSubTitle.Text = ActionBar.SubTitle
        edSubTitle.Hint = 
    "SubTitle"
       
        ABHelper.Initialize
        ABHelper.ShowUpIndicator = 
    True
       

       
       
       
       
        
    'The AppCompat object has some helper methods to get the height for StatusBar, ActionBar and NavigationBar.
        'For the ActionBar there are two methods. GetStdActionBarHeight gets the standard ActionBar Height of the device.
        'Be aware that this is not necessarily the height defined by the material design guidelines. There is a second
        'method GetMaterialActionBarHeight which returns the ActionBar height as defined in the material design guidelines
        'regardless of the Android version.
        Log("ActionBar Height: " & (AC.GetMaterialActionBarHeight / DipToCurrent(1)))
       
        
    'Add some MenuItems
        'The best method to add action icons to the ActionBar/Toolbar is to load them as drawables.
        'With this method it is possible to load icons in different resolutions taking care of the device scale.
        'We use the XmlLayoutBuilder library to load the drawables.
    '    Dim xml As XmlLayoutBuilder
    '    Dim bd As BitmapDrawable
    '    bd = xml.GetDrawable("ic_plus_one_black_24dp")
    '    Activity.AddMenuItem3("Plus one", "Menu", bd.Bitmap, True)
    '   
    '    bd = xml.GetDrawable("ic_refresh_black_24dp")
    '    Activity.AddMenuItem3("Refresh", "Menu", bd.Bitmap, True)
    '   
    '    Activity.AddMenuItem("Overflow1", "Menu")
    '    Activity.AddMenuItem("Overflow2", "Menu")
    '    Activity.AddMenuItem("Overflow3", "Menu")
    '   
    End Sub

    Sub Activity_Resume

    End Sub

    Sub Activity_Pause (UserClosed As Boolean)

    End Sub

    'Show/Hide the Toolbar. This is done with the new SetLayoutAnimated and SetVisibleAnimated methods of B4A 4.0
    Sub cbABVisible_CheckedChange(Checked As Boolean)
        
    If Checked Then
            ActionBar.SetLayoutAnimated(
    20000100%x, AC.GetMaterialActionBarHeight)
            ActionBar.SetVisibleAnimated(
    200True)
            pContent.SetLayoutAnimated(
    2000, AC.GetMaterialActionBarHeight, 100%x100%y - AC.GetMaterialActionBarHeight)
        
    Else
            ActionBar.SetLayoutAnimated(
    20000100%x1dip)
            ActionBar.SetVisibleAnimated(
    200False)
            pContent.SetLayoutAnimated(
    20000100%x100%y)
        
    End If
    End Sub

    'Show/Hide Toolbar Shadow. This only works on Android 5.0 and above.
    Sub cbABShadow_CheckedChange(Checked As Boolean)
        
    If Checked Then
            AC.SetElevation(ActionBar, 
    8dip)
        
    Else
            AC.SetElevation(ActionBar, 
    0dip)
        
    End If
    End Sub

    'Show Toolbar with "up" navigation icon.
    Sub cbShowAsUp_CheckedChange(Checked As Boolean)
        
    If Checked Then
            ABHelper.ShowUpIndicator = 
    True
        
    Else
            ABHelper.ShowUpIndicator = 
    False
        
    End If
    End Sub

    'Sync edittext field with Toolbar Title
    Sub edTitle_TextChanged (Old As String, New As String)
        
    If Old <> New Then
            ActionBar.Title = edTitle.Text
        
    End If
    End Sub

    'Sync edittext field with Toolbar Subtitle
    Sub edSubTitle_TextChanged (Old As String, New As String)
        
    If Old <> New Then
            ActionBar.SubTitle = edSubTitle.Text
        
    End If
    End Sub

    'Show/Hide a Logo
    Sub cbShowLogo_CheckedChange(Checked As Boolean)
        
    If Checked Then
            ActionBar.LogoBitmap = 
    LoadBitmap(File.DirAssets, "b4a_180.png")
        
    Else
            ActionBar.LogoBitmap = 
    Null
        
    End If
    End Sub

    'Handle Menu Click events. These are the normal B4A Menu item click events.
    Sub Menu_Click
        
    Log("MenuItem " & Sender & " selected")
    End Sub

    Sub Activity_ActionBarHomeClick
        
    Log("activity home")
    End Sub

    Regards,
    SK
     
  7. corwin42

    corwin42 Expert Licensed User

    Hmm, try it with
    <item name="android:textColorPrimary">...</item>
    There are some posts on StackOverflow with people have some issues with it. Maybe it won't work.

    The problem is the Toolbar that eats up the event. Use
    ActionBar.InitMenuListener
    and then you can use the
    ActionBar_NavigationItemClicked event.
     
  8. koaunglay

    koaunglay Member Licensed User

    I want to use material design. But I can't run any Material design Example. However I get error. When I run "AppCompatToolbarMenuExample" I get error-->
    Code:
    B4A version 4.30
    Parsing code.                           
    0.04
    Compiling code.                         
    0.20
    Compiling layouts code.                 
    0.06
    Generating R 
    file.                      Error
    invalid resource directory name: ..\resource/drawable-xxxhdpi
    So I deleted "drawable-xxxhdpi" folder. At the time I get this error-->
    Code:
    B4A version 4.30
    Parsing code.                           
    0.01
    Compiling code.                         
    0.03
    Compiling layouts code.                 
    0.00
    Generating R 
    file.                      Error
    ..\resource\values\themes.xml:
    6: error: Error: No resource found that matches the given name: attr 'colorAccent'.
    ..\resource\values\themes.xml:4: error: Error: No resource found that matches the given name: attr 'colorPrimary'.
    ..\resource\values\themes.xml:5: error: Error: No resource found that matches the given name: attr 'colorPrimaryDark'.
    What is my error? Some body help me Please!!!
     
  9. koaunglay

    koaunglay Member Licensed User

    Now I downloaded update
    android-support-v4.jar and android-support-v7-appcompat.jar. But I get error--->
    Code:
    B4A version 4.30
    Parsing code.                           
    0.05
    Compiling code.                         
    0.34
    Compiling layouts code.                 
    0.02
    Generating R 
    file.                      Error
    C:\Users\Koaunglay\Desktop\android-sdk\extras\android\support\v7\appcompat\res\layout\abc_action_bar_home.xml:
    29: error: Error: No resource found that matches the given name (at 'layout_marginTop' with value '@dimen/abc_action_bar_icon_vertical_padding').
    C:\Users\Koaunglay\Desktop\android-sdk\extras\android\support\v7\appcompat\res\layout\abc_action_bar_home.xml:29: error: Error: No resource found that matches the given name (at 'layout_marginBottom' with value '@dimen/abc_action_bar_icon_vertical_padding').
     
  10. corwin42

    corwin42 Expert Licensed User

    The exact steps of how to set up AppCompat libary can be found here.
    Do you reference the API 21 android.jar? Did you check if all #AdditionalRes pathes are correct?
     
  11. MhdBoy

    MhdBoy Member Licensed User

    i have i big problem
    when i compile my app the b4a get me this error

    Code:
    B4A version 4.30
    Parsing code.                           
    0.00
    Compiling code.                         
    0.01
    Compiling layouts code.                 
    0.00
    Generating R 
    file.                      Error
    F:\Source\MaterialDesign\
    2-UsingAppCompact\AppCompatExample2\resource\values\themes.xml:6: error: Error: No resource found that matches the given name: attr 'colorAccent'.
    F:\Source\MaterialDesign\2-UsingAppCompact\AppCompatExample2\resource\values\themes.xml:4: error: Error: No resource found that matches the given name: attr 'colorPrimary'.
    F:\Source\MaterialDesign\2-UsingAppCompact\AppCompatExample2\resource\values\themes.xml:5: error: Error: No resource found that matches the given name: attr 'colorPrimaryDark'.
    how i can fix it
    i update my android-supports and i select API 21 for b4a
    how i can fix it?
     
  12. corwin42

    corwin42 Expert Licensed User

    I guess you have an outdated android-support-v7-appcompat.jar in your custom libs folder or in the <B4AHome>\libraries folder.
     
  13. fishwolf

    fishwolf Active Member Licensed User

    I get this error, but the path is correct

    Code:
    B4A version 4.30
    Parsing code.                           
    0.00
    Compiling code.                         
    0.06
    Compiling layouts code.                 
    0.00
    Generating R 
    file.                      Error
    invalid resource directory name: C:\Programmi\Android\android-sdk\extras\android\support\v7\appcompat\res/drawable-ldrtl-xxxhdpi
    invalid resource directory name: C:\Programmi\Android\android-sdk\extras\android\support\v7\appcompat\res/drawable-xxxhdpi
     
  14. corwin42

    corwin42 Expert Licensed User

    My guess: You have configured a very old android.jar under "Configure Paths".
    Always use the latest platform version (currently android-22)
     
  15. fishwolf

    fishwolf Active Member Licensed User

    in b4a path i have configure version 21/22 of android.jar
    into code you need set the resource path, i have see that appcompact folder is present only on v7 version.

    but i reveive error when compile

    Code:
    #AdditionalRes: ..\resource
    #AdditionalRes: C:\Documents and Settings\Administrator\Documenti\ANDROID\Libraries\b4a_appcompat, de.amberhome.objects.appcompat
    #AdditionalRes: C:\Programmi\Android\android-sdk\extras\android\support\v7\appcompat\res, android.support.v7.appcompat
    #Extends: android.support.v7.app.ActionBarActivity
    [/code[
     
  16. corwin42

    corwin42 Expert Licensed User

    Hmm, another idea. What build tools do you use. Because it complains only about the xxxhdpi folders maybe the build tools are too old. Check in SDK Manager what Android SDK build tools you use.
     
  17. jotaele

    jotaele Member Licensed User

    Hi:

    I tried to change the background color of the overflow menu without success.

    I tried to change the theme.xml, but always shows the same color.

    Anybody has tried?
     
  18. fishwolf

    fishwolf Active Member Licensed User

    i have all android component updated, i have resolved with delete folders of resource.

    why?

    4.30 version don't support xxx layout?
     
  19. corwin42

    corwin42 Expert Licensed User

    It should work with 4.30. (B4A version is not the problem here. It is an issue with outdated android.jar,build tools or library files).
     
  20. fishwolf

    fishwolf Active Member Licensed User

    I'm try also with 5.02 version, the result i'ts the same.
    The android sdk is updated

    i have this error on 2 different PCs
    Code:
    invalid resource directory name: C:\Programmi\Android\android-sdk\extras\android\support\v7\appcompat\res/drawable-ldrtl-xxxhdpi
    invalid resource directory name: C:\Programmi\Android\android-sdk\extras\android\support\v7\appcompat\res/drawable-xxxhdpi
    if i remove the tripel X layout the example app don't start.

    Any Idea?
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice