#android #android-actionbar
#Android #android-actionbar
Вопрос:
Я хочу добавить любое представление, такое как Button, TextView или Spinner, в мою ActionBar.
Как я могу этого добиться?
Примера, содержащего любое из представлений, будет достаточно.
Ответ №1:
Если вы хотите добавить представление в actionbar, вы можете использовать toolbar и вы можете добавить view в toolbar. Например;
<android.support.v7.wid&et.Toolbar
android:id="@ id/toolbar"
android:layout_width="match_parent"
android:layout_hei&ht="wrap_content"
app:popupTheme="@style/ThemeOverlay.AppCompat.Li&ht"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"&&t;
// Add whatever you want
</android.support.v7.wid&et.Toolbar&&t;
Комментарии:
1. Спасибо за ваш ответ. Я знаю, что могу использовать панель инструментов . Но мой вопрос был о том, как сделать это с помощью ActionBar .
Ответ №2:
Я привожу пример ActionBar, содержащий кнопку:
Сначала нам нужно разработать menu_button.xml в res / layout:
<?xml version="1.0" encodin&="utf-8"?&&t;
<Button
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_hei&ht="wrap_content"
android:back&round="@drawable/button_back&round"
android:&ravity="center"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold"
android:textAllCaps="false"/&&t;
Далее нам нужно добавить button_back&round.xml в res / drawable:
<?xml version="1.0" encodin&="utf-8"?&&t;
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectan&le"&&t;
<solid
android:color="#4796F6"/&&t;
<paddin&
android:bottom="7dp"
android:left="7dp"
android:ri&ht="7dp"
android:top="7dp" /&&t;
<stroke
android:width="1.5dp"
android:color="#FFFFFF" /&&t;
<corners android:radius="15dp" /&&t;
</shape&&t;
После этого нам нужно добавить menu.xml в res /menu: (В это меню мы собираемся добавить нашу кнопку которую мы разработали в menu_button.xml)
<?xml version="1.0" encodin&="utf-8"?&&t;
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"&&t;
<item
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@ id/button"
android:title=""
app:showAsAction="always"
app:actionLayout="@layout/menu_button" /&&t;
</menu&&t;
Наконец, из java-файла мы получим пункт меню в виде Button и напечатаем всплывающее сообщение при нажатии на него.
MainActivity.java:
public class MainActivity extends AppCompatActivity {
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
MenuInflater inflater = &etMenuInflater();
inflater.inflate(R.menu.menu, menu);
final MenuItem itemButton = menu.findItem(R.id.button);
button = (Button) itemButton.&etActionView();
button.setText("ActionBar Button");
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do your action here
Toast.makeText(MainActivity.this, "ActionBar Button was pressed!", Toast.LENGTH_LONG).show();
}
});
return true;
}
}