Как я могу реализовать пользовательскую панель действий с пользовательскими кнопками В Android?
Я хочу реализовать пользовательский ActionBar, который должен выглядеть так:

Итак вопросы:
- как я могу реализовать кнопку, как пользовательский вид: просто некоторые изображения?
- как я могу нарисовать линию в верхней части
ActionBar? - и как я могу реализовать кнопки без разделительных линий: добавить вкладки на
ActionBarили что?
3 ответов:
это очень похоже на то, как вы получите если вы хотите использовать
ActionBarAPI-интерфейсы. Я не уверен, что вы можете разместить цветную полосу надActionBarне делая каких-то странныхWindowвзлом, это не стоит хлопот. Что касается измененияMenuItemsидет, вы можете сделать те плотнее через стиль. Это было бы что-то вроде этого, но я не проверял его.<style name="MyTheme" parent="android:Theme.Holo.Light"> <item name="actionButtonStyle">@style/MyActionButtonStyle</item> </style> <style name="MyActionButtonStyle" parent="Widget.ActionButton"> <item name="android:minWidth">28dip</item> </style>вот как надуть и добавить пользовательский макет к вашему
ActionBar.// Inflate your custom layout final ViewGroup actionBarLayout = (ViewGroup) getLayoutInflater().inflate( R.layout.action_bar, null); // Set up your ActionBar final ActionBar actionBar = getActionBar(); actionBar.setDisplayShowHomeEnabled(false); actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayShowCustomEnabled(true); actionBar.setCustomView(actionBarLayout); // You customization final int actionBarColor = getResources().getColor(R.color.action_bar); actionBar.setBackgroundDrawable(new ColorDrawable(actionBarColor)); final Button actionBarTitle = (Button) findViewById(R.id.action_bar_title); actionBarTitle.setText("Index(2)"); final Button actionBarSent = (Button) findViewById(R.id.action_bar_sent); actionBarSent.setText("Sent"); final Button actionBarStaff = (Button) findViewById(R.id.action_bar_staff); actionBarStaff.setText("Staff"); final Button actionBarLocations = (Button) findViewById(R.id.action_bar_locations); actionBarLocations.setText("HIPPA Locations");вот пользовательский макет:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:enabled="false" android:orientation="horizontal" android:paddingEnd="8dip" > <Button android:id="@+id/action_bar_title" style="@style/ActionBarButtonWhite" /> <Button android:id="@+id/action_bar_sent" style="@style/ActionBarButtonOffWhite" /> <Button android:id="@+id/action_bar_staff" style="@style/ActionBarButtonOffWhite" /> <Button android:id="@+id/action_bar_locations" style="@style/ActionBarButtonOffWhite" /> </LinearLayout>вот макет цветной полосы: чтобы использовать его, просто используйте
mergeв любом макете вы надуваете вsetContentView.<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="@dimen/colorstrip" android:background="@android:color/holo_blue_dark" />здесь
Buttonстили:<style name="ActionBarButton"> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:background">@null</item> <item name="android:ellipsize">end</item> <item name="android:singleLine">true</item> <item name="android:textSize">@dimen/text_size_small</item> </style> <style name="ActionBarButtonWhite" parent="@style/ActionBarButton"> <item name="android:textColor">@color/white</item> </style> <style name="ActionBarButtonOffWhite" parent="@style/ActionBarButton"> <item name="android:textColor">@color/off_white</item> </style>вот цвета и размеры которые я использую:
<color name="action_bar">#ff0d0d0d</color> <color name="white">#ffffffff</color> <color name="off_white">#99ffffff</color> <!-- Text sizes --> <dimen name="text_size_small">14.0sp</dimen> <dimen name="text_size_medium">16.0sp</dimen> <!-- ActionBar color strip --> <dimen name="colorstrip">5dp</dimen>если вы хотите настроить его больше, чем это, вы можете рассмотрите возможность не использовать
ActionBarвообще, но я бы не рекомендовал этого. Вы также можете рассмотреть возможность чтения через Руководство По Дизайну Android чтобы получить лучшее представление о том, как создать свойActionBar.если вы решите отказаться от
ActionBarи использовать свой собственный макет вместо этого, вы должны быть уверены, чтобы добавить action-ableToastsкогда пользователи нажмите и удерживайте кнопку "Меню". Это может быть легко достигнуто используя эту суть.
1 Вы можете использовать drawable
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_item1" android:icon="@drawable/my_item_drawable" android:title="@string/menu_item1" android:showAsAction="ifRoom" /> </menu>2 Создайте стиль для панели действий и используйте пользовательский фон:
<resources> <!-- the theme applied to the application or activity --> <style name="CustomActivityTheme" parent="@android:style/Theme.Holo"> <item name="android:actionBarStyle">@style/MyActionBar</item> <!-- other activity and action bar styles here --> </style> <!-- style for the action bar backgrounds --> <style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar"> <item name="android:background">@drawable/background</item> <item name="android:backgroundStacked">@drawable/background</item> <item name="android:backgroundSplit">@drawable/split_background</item> </style> </resources>3 стиль снова android: actionBarDivider
The документация для android очень полезно для этого.
пожалуйста, напишите следующий код в меню.xml-файл:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:my_menu_tutorial_app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.example.mymenus.menu_app.MainActivity"> <item android:id="@+id/item_one" android:icon="@drawable/menu_icon" android:orderInCategory="l01" android:title="Item One" my_menu_tutorial_app:showAsAction="always"> <!--sub-menu--> <menu> <item android:id="@+id/sub_one" android:title="Sub-menu item one" /> <item android:id="@+id/sub_two" android:title="Sub-menu item two" /> </menu>также напишите этот код java в файле класса активности:
public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); Toast.makeText(this, "Menus item selected: " + item.getTitle(), Toast.LENGTH_SHORT).show(); switch (item.getItemId()) { case R.id.sub_one: isItemOneSelected = true; supportInvalidateOptionsMenu(); return true; case MENU_ITEM + 1: isRemoveItem = true; supportInvalidateOptionsMenu(); return true; default: return false; } }Это самый простой способ для отображения меню в панели действий.

Comments