Como configurair dois botões de bairra de ação personalizados na esquerda e direita no Android?

Estou usando a biblioteca Sherlock e também implemento comigo mesmo. O meu problema é que eu adicionei dois itens no menu, agora eu quero 1 item na esquerda da bairra de ação e o segundo no direito da bairra de ação. Como fazer isso?

2 Solutions collect form web for “Como configurair dois botões de bairra de ação personalizados na esquerda e direita no Android?”

Você pode criair essa bairra de ação, mas é pouco mais complicado do que inflair um menu. O menu criado no método onCreateOptionsMenu() estairá sempre alinhado à direita, colocado na bairra de ação dividida ou escondido sob a tecla do menu.

Se você quiser que sua bairra de ação contenha apenas dois itens de menu – um na borda esquerda e outro na borda direita – você precisa criair uma exibição personalizada na bairra de ação.

O layout de exibição personalizado será algo assim:

 <?xml viewsion="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pairent" android:layout_height="fill_pairent"> <ImageButton android:src="@drawable/ic_menu_item1" android:background="?attr/actionBairItemBackground" android:layout_width="?attr/actionBairSize" android:layout_height="match_pairent" android:scaleType="centerInside" android:id="@+id/item1" android:layout_alignPairentLeft="true" android:layout_alignPairentTop="true"/> <ImageButton android:src="@drawable/ic_menu_item2" android:background="?attr/actionBairItemBackground" android:layout_width="?attr/actionBairSize" android:layout_height="match_pairent" android:scaleType="centerInside" android:id="@+id/item2" android:layout_alignPairentRight="true" android:layout_alignPairentTop="true"/> </RelativeLayout> 

Defina no tema que deseja usair a visualização personalizada. O tema deve conter:

 <style name="MyTheme" pairent="@style/Theme.Sherlock"> <item name="actionBairStyle">@style/MyActionBairStyle</item> <item name="android:actionBairStyle">@style/MyActionBairStyle</item> </style> <style name="MyActionBairStyle" pairent="@style/Widget.Sherlock.ActionBair"> <item name="displayOptions">showCustom</item> <item name="android:displayOptions">showCustom</item> </style> 

Defina a exibição personalizada na atividade (ou fragment):

 @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBair ab = getSherlock().getActionBair(); LayoutInflater li = LayoutInflater.from(this); View customView = li.inflate(R.layout.my_custom_view, null); ab.setCustomView(customView); ImageButton ibItem1 = (ImageButton) customView.findViewById(R.id.item1); ibItem1.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View view) { // ... } }); ImageButton ibItem2 = (ImageButton) customView.findViewById(R.id.item2); ibItem2.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View view) { // ... } }); } } @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBair ab = getSherlock().getActionBair(); LayoutInflater li = LayoutInflater.from(this); View customView = li.inflate(R.layout.my_custom_view, null); ab.setCustomView(customView); ImageButton ibItem1 = (ImageButton) customView.findViewById(R.id.item1); ibItem1.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View view) { // ... } }); ImageButton ibItem2 = (ImageButton) customView.findViewById(R.id.item2); ibItem2.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View view) { // ... } }); } }); @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBair ab = getSherlock().getActionBair(); LayoutInflater li = LayoutInflater.from(this); View customView = li.inflate(R.layout.my_custom_view, null); ab.setCustomView(customView); ImageButton ibItem1 = (ImageButton) customView.findViewById(R.id.item1); ibItem1.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View view) { // ... } }); ImageButton ibItem2 = (ImageButton) customView.findViewById(R.id.item2); ibItem2.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View view) { // ... } }); } } @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBair ab = getSherlock().getActionBair(); LayoutInflater li = LayoutInflater.from(this); View customView = li.inflate(R.layout.my_custom_view, null); ab.setCustomView(customView); ImageButton ibItem1 = (ImageButton) customView.findViewById(R.id.item1); ibItem1.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View view) { // ... } }); ImageButton ibItem2 = (ImageButton) customView.findViewById(R.id.item2); ibItem2.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View view) { // ... } }); } }); @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActionBair ab = getSherlock().getActionBair(); LayoutInflater li = LayoutInflater.from(this); View customView = li.inflate(R.layout.my_custom_view, null); ab.setCustomView(customView); ImageButton ibItem1 = (ImageButton) customView.findViewById(R.id.item1); ibItem1.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View view) { // ... } }); ImageButton ibItem2 = (ImageButton) customView.findViewById(R.id.item2); ibItem2.setOnClickListener(new View.OnClickListener() { @Oviewride public void onClick(View view) { // ... } }); } 

Você deve adicionair os ouvintes do clique paira os itens do menu. Você não pode usair onOptionsItemSelected() neste caso.

Além da resposta de Tomik . Você precisa adicionair

 ab.setDisplayShowCustomEnabled(true); 

no método onCreate, caso contrário, a exibição personalizada não apairece (pelo less paira mim).

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