No último 18/07 a Google finalmente adicionou o suporte à ActionBar na API de compatibilidade. Pelo menos para API v7 (Android 2.1 ou superior). Para usá-la, vá até o SDK Manager e atualize a API de compatibilidade marcando a opção Extras > Android Support Library.
Feito isso, vá até o Eclipse e importe o projeto appcompat disponível no diretório SDK_DIR/extras/android/support/v7. Crie um novo projeto e referencie o projeto importado anteriormente clicando com o botão direito sobre o projeto e selecionando Properties. Em seguida, selecione a opção Android no lado esquerdo e na parte inferior, clique em Add. Selecione o projeto android-support-v7-appcompat. Agora apague o arquivo android-support-v4.jar da pasta lib do projeto, pois o projeto que acabamos de importar já tem esse arquivo.
Nossa Activity agora herdará ActionBarActivity (que herda de FragmentActivity).
import android.support.v7.app.ActionBarActivity;
public class MainActivity extends ActionBarActivity {
// Implementação normal da Activity
}
Obrigatoriamente, nossa Activity tem que ter o estilo da R.style.Theme.AppCompat. Para tal, vá até o arquivo values/styles.xml e modifique o tema da aplicação conforme abaixo.
<style name="AppBaseTheme" parent="@style/Theme.AppCompat">
Pronto! Agora é só usar a ActionBar como se estivesse no Android 3.0 ou superior :)
EDITADO em 05/08/2013
Para usar a SearchView nesse nova biblioteca, adicione o arquivo res/menu/main.xml.
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:suaapp="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="always|withText"
android:icon="@android:drawable/ic_menu_info_details"
android:title="@string/action_settings"/>
<item android:id="@+id/search"
android:title="Search"
android:icon="@android:drawable/ic_menu_search"
suaapp:showAsAction="collapseActionView|ifRoom"
suaapp:actionViewClass="android.support.v7.widget.SearchView" />
</menu>
Agora deixe o código da sua Activity como abaixo:
public class MainActivity extends ActionBarActivity
implements SearchView.OnQueryTextListener {
private MenuItem mSearchItem;
private SearchView mSearchView;
private TextView mTextTeste;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextTeste =
(TextView)findViewById(R.id.textView1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
mSearchItem = menu.findItem(R.id.search);
mSearchView = (SearchView)
MenuItemCompat.getActionView(mSearchItem);
mSearchView.setOnQueryTextListener(this);
return true;
}
@Override
public boolean onQueryTextChange(String text) {
mTextTeste.setText(text);
return false;
}
@Override
public boolean onQueryTextSubmit(String text) {
mTextTeste.setText(text +" GO!");
MenuItemCompat.collapseActionView(mSearchItem);
return true;
}
}
4br4ç05,
nglauber



12 comentários:
aew \o/. uma lib a menos nos projetos (sherlok)
Show de bola funcionou perfeitamente....
nesse link no android developer, da outros passos, por exemplo adicionar campo de pesquisa e etc.
http://developer.android.com/guide/topics/ui/actionbar.html
Oi Anônimo,
Editei o post para adicionar a SearchView.
Thanks for your comment!
4br4ç05,
nglauber
Muito bom, atendeu exatamente o que eu precisava.
Valeu!!
Excelente post Nelson! Parabéns e obrigado por compartilhar! :)
Não encontra R.id.search. O que uso no lugar?
Já descobri, obrigado
Não deu certo, o aplicativo parou ao entrar
Não pode ter dado certo com outros, não tem condição
Oi Ideia Informatica,
Antes de dizer que não funciona é bom checar ;)
4br4ç05,
nglauber
Obrigado pela resposta
Minhas opções não aparecem de jeito nenhum. Eu usava a ActionBarSherlock e apareciam normalmente, depois que mudei não aparecem. Alguma dica?
Olá Ideia Informática,
Algumas coisas que você deve checar:
1) Herdar de ActionBarActivity
2) Se está implementando o onCreateOptions() corretamente
3) Se está usando o namespace xmlns:suaapp
4br4ç05,
nglauber
Postar um comentário