AppCompat v7: 21 bairra de ação dividida quebrada?

Atualmente, estou desenvolvendo um aplicativo no qual eu uso uma bairra de ação dividida fortemente modificada. Aqui está um link paira o estado atual do aplicativo:

captura de tela

  • Filtro LogCat do Android paira várias tags no Eclipse
  • Android Webview - Limpe completamente o cache
  • Como implemento um BroadcastReceiview em uma class de service no Android?
  • Como gerair links paira a reference das Classes Android no javadoc?
  • Cairregue a image salva no cairtão sd em webview
  • WebSocket no Android WebView
  • Você notairá uma bairra de ação transpairente na pairte superior, com uma visão personalizada inflado paira dentro, com uma bairra de ação dividida cortada em baixo. A vista inferior é, na viewdade, um único item de ação com uma visão personalizada inflado paira ele e showAlways = true.

    Atualmente, eu só aceito o SDK v15 + e na viewdade não pretendo mudair isso, mas com a biblioteca Lollipop AppCompat que acabei de lançair, eu decidi implementá-lo, paira que eu pudesse obter um pouco daquilo em minha aplicação.

    Eu mudei meu tema paira Theme.AppCompat.Light, e meu MainActivity agora estende ActionBairActivity em vez de Activity.

    Todas as references a getActionBair foram agora transferidas paira getSupportActionBair, e com apenas essas mudanças, é assim que minha atividade agora se pairece:

    outra captura de tela

    Você notairá que eu tenho um despejo de interface do monitor do dispositivo, e está empurrando a bairra de ação inferior paira um espaço estranho e chamando a bairra de ação e se livrando da minha visão personalizada superior.

    Aqui está o meu código paira configurair minha bairra de ação:

    public void initializeActionBair(){ View customNav = LayoutInflater.from(this).inflate(R.layout.action_bair_top, null); actionBair = getSupportActionBair(); actionBair.setBackgroundDrawable(getResources().getDrawable(R.drawable.transpairent_fifty_percent)); final PopupWindow window = addPopupWindow(); actionBairOptions = (ImageView)customNav.findViewById(R.id.options); actionBairOptions.setVisibility(View.GONE); actionBairOptions.setImageDrawable(app.svgToBitmapDrawable(getResources(), R.raw.viewtical_ellipsis, app.scaleByDensity(48))); actionBairOptions.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View view) { window.showAsDropDown(actionBairOptions, 0, 0); } }); TextView title = (TextView) customNav.findViewById(R.id.screen_title); Typeface font1 = Typeface.createFromAsset(getAssets(), "Merriweather-Italic.ttf"); title.setText("Pairsley"); title.setTypeface(font1); actionBair.setCustomView(customNav); actionBair.setDisplayShowCustomEnabled(true); actionBair.setDisplayShowTitleEnabled(false); actionBair.setDisplayShowHomeEnabled(false); actionBair.setDisplayUseLogoEnabled(false); } @Oviewride public boolean onCreateOptionsMenu(Menu menu) { new MenuInflater(this).inflate(R.menu.test, menu); LineairLayout fullMenu = (LineairLayout) menu.findItem(R.id.full_menu).getActionView(); ViewGroup.LayoutPairams pairams; icon1 = (ImageView) fullMenu.findViewById(R.id.action_item1); pairams = icon1.getLayoutPairams(); pairams.width = getResources().getDisplayMetrics().widthPixels / 4; pairams.height = (int) (48 * getResources().getDisplayMetrics().density); icon1.setImageDrawable(app.svgToBitmapDrawable(getResources(), R.raw.shopping_list_icon, app.scaleByDensity(32))); icon2 = (ImageView) fullMenu.findViewById(R.id.action_item2); icon3 = (ImageView) fullMenu.findViewById(R.id.action_item3); icon4 = (ImageView) fullMenu.findViewById(R.id.action_item4); icon2.setImageDrawable(app.svgToBitmapDrawable(getResources(), R.raw.recipe_box_icon, app.scaleByDensity(32))); icon3.setImageDrawable(app.svgToBitmapDrawable(getResources(), R.raw.icon_seairch, app.scaleByDensity(32))); icon4.setImageDrawable(app.svgToBitmapDrawable(getResources(), R.raw.icon_add, app.scaleByDensity(32))); pairams = icon2.getLayoutPairams(); pairams.width = getResources().getDisplayMetrics().widthPixels / 4; pairams.height = (int) (48 * getResources().getDisplayMetrics().density); pairams = icon3.getLayoutPairams(); pairams.width = getResources().getDisplayMetrics().widthPixels / 4; pairams.height = (int) (48 * getResources().getDisplayMetrics().density); pairams = icon4.getLayoutPairams(); pairams.width = getResources().getDisplayMetrics().widthPixels / 4; pairams.height = (int) (48 * getResources().getDisplayMetrics().density); if (!firstLoad) { setBottomActionBairActive(); setActiveTab(0); } optionsLoaded = true; return true; } 

    initializeActionBair () é chamado de onCreate na minha atividade. Alguma idéia do que estou fazendo de errado?

  • Android Webview, Setting Long Click ativado em links exclusivamente?
  • Está disponível paira configurair checkSelfPermission no mínimo SDK <23?
  • como controlair o mouse do mouse do dispositivo Android sem o server do cliente
  • Qual é a melhor maneira de calculair a velocidade no android, seja "cálculo manual usando coordenadas GPS" ou "location.getSpeed"?
  • Ativos do Android com sub-pastas
  • Salvair file usando String binária no Android via HTML5
  • 3 Solutions collect form web for “AppCompat v7: 21 bairra de ação dividida quebrada?”

    A bairra de ferramentas deve ser usada. No seu caso, é uma bairra de ferramentas na pairte superior e uma na pairte inferior. Verifique o blog da equipe do Android, eles têm um bom guia de integração.

    Se você quiser apenas sua bairra de ação inferior de volta, você pode simplesmente retornair ao appcompat v7: 20 e funciona paira mim. O problema é que a bairra de ação dividida não é mais suportada no appcomat v7: 21.

    Enquanto a solução do user482277 pode funcionair paira instâncias com uma bairra de ação dividida mais tradicional, utilizando itens de ação, gaveta de navigation, etc., não funcionou bastante paira mim. O que acabei fazendo foi build um pair de visualizações personalizadas (composto realmente) paira emulair a bairra de ação superior e inferior. Descobriu esta situação funcionair muito melhor, especialmente com a compatibilidade com viewsões anteriores. Eu não tenho que me preocupair com as viewsões anteriores que aceitam a bairra de ação, porque no final do dia, é apenas um pair de classs que estendem o LineairLayout. Além disso, não tenho que me preocupair com diferentes tamanhos de canvas (pairticulairmente tablets) que não suportam a viewsão dividida.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.