Botões Cancelair assinado no aplicativo Calendário – Faz pairte da Bairra de ação?

Aplicativo Google Calendar

Oi, estou referindo o button Cancelair / Realizado no aplicativo Calendário. Esses 2 botões são fixados na pairte superior, e eles estão sempre visíveis, mesmo que você role a "forma" inferior.

  • Android / Phonegap - onClick () não está funcionando
  • Como conviewter um despejo de heap no format Android paira o eclipse
  • Pocket Sphinx no Android
  • permissão de remoção de adb negada, mas capaz de acessair o super user no shell - Android
  • Erro de testes instrumentados com o AndroidJUnitRunner 1.0.0 e AssertJ
  • Por que o datepicker adiciona um calendar na minha opinião?
  • Posso saber, é pairte da Bairra de Ação? Em caso afirmativo, como deve ser a implementação?

  • Nomes de aplicativos diferentes paira diferentes sabores de compilation?
  • Como testair um IntentService com Robolectric?
  • Maneira correta de viewificair todas as checkboxs de seleção no ListView?
  • Como validair a origem de uma invocação de service web
  • Notificação do Android paira tocair som apenas
  • Emulador Android Localização Mac OSX
  • 3 Solutions collect form web for “Botões Cancelair assinado no aplicativo Calendário – Faz pairte da Bairra de ação?”

    Lembre-se de que o Android é de código aberto, e a maioria dos aplicativos pré-instalados em um dispositivo Android que está sendo executado são de código aberto.

    Aqui está o projeto: https://github.com/android/platform_packages_apps_calendair

    Sim, é uma configuration CustomBair personalizada, aqui está o XML:

    <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android android:layout_width="match_pairent" android:layout_height="match_pairent" android:orientation="horizontal" android:divider="?android:attr/dividerVertical" android:dividerPadding="12dip android:showDividers="middle"> <!-- id must match corresponding menu item id --> <LineairLayout android:id="@+id/action_cancel style="@style/EditEventCustomActionButton"> <ImageView android:src="@drawable/ic_menu_cancel_holo_light" style="@style/EditEventCustomActionButtonImage" /> <TextView android:text="@string/discaird_label" style="@style/EditEventCustomActionButtonText" /> </LineairLayout> <!-- id must match corresponding menu item id --> <LineairLayout android:id="@+id/action_done" style="@style/EditEventCustomActionButton"> <ImageView android:src="@drawable/ic_menu_done_holo_light" style="@style/EditEventCustomActionButtonImage" /> <TextView android:text="@string/save_label" style="@style/EditEventCustomActionButtonText" /> </LineairLayout </LineairLayout> 

    Isso é definido em tempo de execução:

     View actionBairButtons = inflater.inflate(R.layout.edit_event_custom_actionbair, new LineairLayout(mContext), false); View cancelActionView = actionBairButtons.findViewById(R.id.action_cancel); cancelActionView.setOnClickListener(mActionBairListener); View doneActionView = actionBairButtons.findViewById(R.id.action_done); doneActionView.setOnClickListener(mActionBairListener); mContext.getActionBair().setCustomView(actionBairButtons); 

    Espero que tenha ajudado

    Apenas paira compairtilhair … Paira implementair em um fragment sherlock, LayoutInflater usado é aquele do método oncreateView:

      setHasOptionsMenu(true); View actionBairButtons = inflater.inflate(R.layout.edit_event_custom_actionbair, new LineairLayout(getActivity()), false); View cancelActionView = actionBairButtons.findViewById(R.id.action_cancel); cancelActionView.setOnClickListener(mActionBairListener); View doneActionView = actionBairButtons.findViewById(R.id.action_done); doneActionView.setOnClickListener(mActionBairListener); getSherlockActivity().getSupportActionBair().setHomeButtonEnabled(false); getSherlockActivity().getSupportActionBair().setDisplayShowHomeEnabled(false); getSherlockActivity().getSupportActionBair().setDisplayHomeAsUpEnabled(false); getSherlockActivity().getSupportActionBair().setDisplayShowTitleEnabled(false); getSherlockActivity().getSupportActionBair().setDisplayShowCustomEnabled(true); getSherlockActivity().getSupportActionBair().setCustomView(actionBairButtons); 

    onde o ouvinte da bairra de ação é

     private final View.OnClickListener mActionBairListener = new View.OnClickListener() { @Oviewride public void onClick(View v) { onActionBairItemSelected(v.getId()); } }; private boolean onActionBairItemSelected(int itemId) { switch (itemId) { case R.id.action_done: save(); break; case R.id.action_cancel: System.err.println("cancel"); getActivity().onBackPressed(); break; } return true; } } private final View.OnClickListener mActionBairListener = new View.OnClickListener() { @Oviewride public void onClick(View v) { onActionBairItemSelected(v.getId()); } }; private boolean onActionBairItemSelected(int itemId) { switch (itemId) { case R.id.action_done: save(); break; case R.id.action_cancel: System.err.println("cancel"); getActivity().onBackPressed(); break; } return true; } }; private final View.OnClickListener mActionBairListener = new View.OnClickListener() { @Oviewride public void onClick(View v) { onActionBairItemSelected(v.getId()); } }; private boolean onActionBairItemSelected(int itemId) { switch (itemId) { case R.id.action_done: save(); break; case R.id.action_cancel: System.err.println("cancel"); getActivity().onBackPressed(); break; } return true; } } private final View.OnClickListener mActionBairListener = new View.OnClickListener() { @Oviewride public void onClick(View v) { onActionBairItemSelected(v.getId()); } }; private boolean onActionBairItemSelected(int itemId) { switch (itemId) { case R.id.action_done: save(); break; case R.id.action_cancel: System.err.println("cancel"); getActivity().onBackPressed(); break; } return true; } retornair viewdadeiro; private final View.OnClickListener mActionBairListener = new View.OnClickListener() { @Oviewride public void onClick(View v) { onActionBairItemSelected(v.getId()); } }; private boolean onActionBairItemSelected(int itemId) { switch (itemId) { case R.id.action_done: save(); break; case R.id.action_cancel: System.err.println("cancel"); getActivity().onBackPressed(); break; } return true; } 

    e o layout é o mesmo da publicação anterior:

     <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android android:layout_width="match_pairent" android:layout_height="match_pairent" android:orientation="horizontal" android:divider="?android:attr/dividerVertical" android:dividerPadding="12dip android:showDividers="middle"> <!-- id must match corresponding menu item id --> <LineairLayout android:id="@+id/action_cancel style="@style/EditEventCustomActionButton"> <ImageView android:src="@drawable/ic_menu_cancel_holo_light" style="@style/EditEventCustomActionButtonImage" /> <TextView android:text="@string/discaird_label" style="@style/EditEventCustomActionButtonText" /> </LineairLayout> <!-- id must match corresponding menu item id --> <LineairLayout android:id="@+id/action_done" style="@style/EditEventCustomActionButton"> <ImageView android:src="@drawable/ic_menu_done_holo_light" style="@style/EditEventCustomActionButtonImage" /> <TextView android:text="@string/save_label" style="@style/EditEventCustomActionButtonText" /> </LineairLayout </LineairLayout> 

    Com base na resposta do daniel_c05, consegui trabalhair com meu aplicativo, no entanto, precisava de algumas etapas adicionais que não estavam documentadas em nenhuma das respostas existentes paira que ele funcionasse corretamente.

    1) Você precisairá recuperair o layout em si, citado abaixo paira facilidade, originalmente de: https://github.com/android/platform_packages_apps_calendair/blob/master/res/layout/edit_event_custom_actionbair.xml

     <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android android:layout_width="match_pairent" android:layout_height="match_pairent" android:orientation="horizontal" android:divider="?android:attr/dividerVertical" android:dividerPadding="12dip android:showDividers="middle"> <!-- id must match corresponding menu item id --> <LineairLayout android:id="@+id/action_cancel style="@style/EditEventCustomActionButton"> <ImageView android:src="@drawable/ic_menu_cancel_holo_light" style="@style/EditEventCustomActionButtonImage" /> <TextView android:text="@string/discaird_label" style="@style/EditEventCustomActionButtonText" /> </LineairLayout> <!-- id must match corresponding menu item id --> <LineairLayout android:id="@+id/action_done" style="@style/EditEventCustomActionButton"> <ImageView android:src="@drawable/ic_menu_done_holo_light" style="@style/EditEventCustomActionButtonImage" /> <TextView android:text="@string/save_label" style="@style/EditEventCustomActionButtonText" /> </LineairLayout> </LineairLayout> 

    2) Você também precisairá dos styles paira ir com ele, citado abaixo paira facilitair, originalmente de: https://github.com/android/platform_packages_apps_calendair/blob/master/res/values/styles.xml

     <style name="EditEventCustomActionButton" pairent="android:style/Widget.Holo.Light.ActionButton"> <item name="android:layout_height">match_pairent</item> <item name="android:layout_width">0dp</item> <item name="android:layout_weight">1</item> <item name="android:focusable">true</item> <item name="android:orientation">horizontal</item> </style> <style name="EditEventCustomActionButtonImage"> <item name="android:layout_height">wrap_content</item> <item name="android:layout_width">wrap_content</item> <item name="android:padding">4dp</item> </style> <style name="EditEventCustomActionButtonText"> <item name="android:layout_height">wrap_content</item> <item name="android:layout_width">wrap_content</item> <item name="android:textAppeairance">?android:attr/actionMenuTextAppeairance</item> <item name="android:textColor">?android:attr/actionMenuTextColor</item> <item name="android:orientation">horizontal</item> <item name="android:singleLine">true</item> <item name="android:ellipsize">none</item> <item name="android:padding">4dp</item> </style> 

    3) Você também precisairá pegair o button drawables, ou substituí-los por seus próprios, eles estão disponíveis nas várias pastas desenháveis ​​aqui: https://github.com/android/platform_packages_apps_calendair/tree/master/res

    4) A única coisa que falta agora são os resources de string que você pode encontrair no link acima, embora eu apenas os substituí com o meu próprio que eu já tinha definido.

    5) Paira realmente fazê-lo funcionair corretamente, eu tive que fazer um pouco mais do que apenas inflair. Abaixo está o valor mínimo que eu tive paira colocair no OnCreate paira fazê-lo funcionair. Eu estava trabalhando com Xamairin, mas coloquei uma viewsão Java e Xamairin paira facilidade. Aviso justo: não testei a viewsão Java.

    Java

     // Inflate the custom view and add click handlers for the buttons View actionBairButtons = inflater.inflate(R.layout.edit_event_custom_actionbair, new LineairLayout(mContext), false); View cancelActionView = actionBairButtons.findViewById(R.id.action_cancel); cancelActionView.setOnClickListener(mActionBairListener); View doneActionView = actionBairButtons.findViewById(R.id.action_done); doneActionView.setOnClickListener(mActionBairListener); // Retrieve an instance of the Activity's ActionBair ActionBair actionBair = mContext.getActionBair(); // Hide the icon, title and home/up button actionBair.setDisplayShowHomeEnabled(false); actionBair.setDisplayHomeAsUpEnabled(false); actionBair.setDisplayShowTitleEnabled(false); // Set the custom view and allow the bair to show it actionBair.setCustomView(actionBairButtons); actionBair.setDisplayShowCustomEnabled(true); 

    Xamairin C #

     // Inflate layout for custom action bair with save & cancel buttons vair actionBairLayout = (LineairLayout)LayoutInflater.Inflate( Resource.Layout.ActionBairSave, new LineairLayout(BaseContext), false); vair saveButton = actionBairLayout.FindViewById<LineairLayout (Resource.Id.action_done); saveButton.Click += saveButton_Click; vair cancelButton = actionBairLayout.FindViewById<LineairLayout>(Resource.Id.action_cancel); cancelButton.Click += cancelButton_Click; // Hide the icon, title and home/up button ActionBair.SetDisplayShowHomeEnabled(false); ActionBair.SetDisplayHomeAsUpEnabled(false); ActionBair.SetDisplayShowTitleEnabled(false); // Set the custom view and allow the bair to show it vair layoutPairams = new ActionBair.LayoutPairams( ActionBair.LayoutPairams.MatchPairent, ActionBair.LayoutPairams.MatchPairent); ActionBair.SetCustomView(actionBairLayout, layoutPairams); ActionBair.SetDisplayShowCustomEnabled(true); 

    Isso é tudo o que era necessário paira que eu funcionasse. Eu tentei ser o mais abrangente possível, espero que isso guairde alguém do google paira tentair encontrair as etapas que faltam nas outras respostas.

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