Панель действий - пользовательское изображение и текст рядом с кнопкой ВВЕРХ

У меня есть экран входа в систему с двумя вариантами в моем приложении - «войти» и «создать учетную запись». Я хочу реализовать следующую вещь, например, на экране входа в систему:

введите здесь описание изображения

У меня есть одно действие и другое, нажав кнопку «ВВЕРХ», я хочу вернуться назад. У меня есть следующий конструктор желаемой активности:

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_bl__login_form_view_controller);
    getActionBar().setDisplayHomeAsUpEnabled(true);

    //----------------------added source - no effect-----------------------

    getActionBar().setDisplayShowHomeEnabled(true);
    getActionBar().setIcon(R.drawable.circle) ;
    getActionBar().setTitle("A title");


    //---------------------------------------------------------------------
    setTitle ("Вход") ;
}

И у меня есть кнопка ВВЕРХ. Как я могу добавить изображение круга и текст? Во всех учебниках говорится, что я могу установить значок приложения в AppManifest, но это изменит значок приложения на главном экране. И как я могу добавить текст к кнопке «Назад»? Я не хочу реализовывать какую-либо логику навигации или устанавливать родительскую активность для всего приложения, потому что это экран входа в систему, а главное меню с логикой навигации будет отображаться только после авторизации. Заранее спасибо!


person Nikita Semenov    schedule 02.09.2014    source источник


Ответы (6)


setTitle установит заголовок, а setIcon установит значок ActionBar.

getActionBar().setTitle("Your Title");
getActionBar().setDisplayShowHomeEnabled(true);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setIcon(R.drawable.youricon);

Ссылка: Добавление действия и http://developer.android.com/guide/topics/ui/actionbar.html

person Nabasree Suvasourya    schedule 02.09.2014
comment
Появляется только обратная стрелка ‹ в левом верхнем углу, но нет значка или текста ( - person Nikita Semenov; 02.09.2014
comment
ну, в процедуре onCreateOptionsMenu (меню меню) я установил для всех этих параметров значение false. спасибо - person Nikita Semenov; 02.09.2014

Что о:

getActionBar().setIcon(R.drawable.circle);
person Christopher    schedule 02.09.2014

используйте getActionBar().setIcon(R.drawable.youricon) для установки значка и getActionBar().setTitle("A title"); для установки текста рядом со значком.

person Gumbo    schedule 02.09.2014
comment
Я сделал так, но ничего не работает. Должен ли я редактировать xml стили панели действий? - person Nikita Semenov; 02.09.2014
comment
Вы можете сделать это с помощью стилей xml, но это должно работать так, как написал я (и все остальные). Что именно не работает? - person Gumbo; 02.09.2014
comment
Появляется только обратная стрелка ‹ в левом верхнем углу, но нет значка или текста - person Nikita Semenov; 02.09.2014
comment
@NikitaPronchik, может быть, текст/значок имеет тот же цвет, что и фон? В этом случае см. этот учебник о том, как это изменить. - person Gumbo; 02.09.2014

Для значка:

getActionBar().setIcon(R.drawable.youricon);

Для названия:

getActionBar().setTitle("A title");
person Naveen Tamrakar    schedule 02.09.2014
comment
Я сделал так, но ничего не работает. Смотрите отредактированный вопрос. Должен ли я редактировать xml стили панели действий? - person Nikita Semenov; 02.09.2014

вы можете использовать настраиваемую панель действий, используя свой собственный макет

actionBar.setDisplayShowHomeEnabled(false);
actionBar.setHomeButtonEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);

final ViewGroup actionBarLayout = (ViewGroup)getLayoutInflater().inflate(R.layout.yourXML, null);
actionBarLayout.findViewById(R.id.buttonId).setOnClickListener(this);

actionBar.setCustomView(actionBarLayout);

это работа для меня. поэтому я надеюсь, что это сработает для вас.

person Mr. Borad    schedule 02.09.2014
comment
Появляется только обратная стрелка ‹ в левом верхнем углу, но нет значка или текста - person Nikita Semenov; 02.09.2014
comment
Вы создали макет для этого? - person Mr. Borad; 02.09.2014
comment
Что ж, у меня есть автоматически сгенерированный xml-файл для этой панели в папке меню, но, похоже, я могу настроить только правую группу кнопок в тегах ‹item›‹/item›. Не так ли? - person Nikita Semenov; 02.09.2014
comment
да это. вам нужно создать xml в папке макета. тогда он будет отображаться как панель действий. понятно ? - person Mr. Borad; 02.09.2014
comment
Да, у меня уже есть макет активности в res/layout и панели действий в res/menu. В res/menu, как я понял, есть xml-файл с настройками панели действий, а в res/layout есть xml-файл для всей активности. Согласно руководству, я должен отредактировать файл res/menu, чтобы добавить новые элементы на панель в правой группе. Но, кажется, я не совсем уловил, что мне сделать с файлом res/layout, чтобы это дело заработало? - person Nikita Semenov; 02.09.2014

Принятый ответ хорошо решает проблему. Я просто добавляю дополнительную информацию об использовании пользовательского макета панели действий.

getActionBar().setTitle("Your Title");
getActionBar().setDisplayShowHomeEnabled(true);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setIcon(R.drawable.youricon);
// You can use setLogo instead like 
// getActionBar().setIcon(R.drawable.youricon);

// In case of support action bar, if its not showing properly, you need to add display options
//getActionBar().setDisplayOptions(actionBar.getDisplayOptions() | ActionBar.DISPLAY_SHOW_CUSTOM);

Теперь вот фрагмент кода, описывающий, как использовать пользовательский макет в панели действий Android.

// Make a layout named 'custom_actionbar' and simply add elements you want to show in your actionbar.
final ViewGroup actionBarLayout = (ViewGroup) getLayoutInflater()
                .inflate(R.layout.custom_actionbar, null);
// Now for support action bar, get the action bar 
actionBar = getSupportActionBar();

// Set necessary attributes
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
actionBar.setElevation(0);

// Set the custom layout in actionbar here
actionBar.setCustomView(actionBarLayout);
actionBar.setDisplayOptions(actionBar.getDisplayOptions()
                | ActionBar.DISPLAY_SHOW_CUSTOM);

// Now handle the elements of the custom layout here
Button b1 = (Button) findViewById(R.id.button1);
// Set actions for Button 1 here
b1.setText("Button 1");

// Another element in custom actionbar
ImageView iv1 = (ImageView) findViewById(R.id.myImage);
iv1.setBackgroundResource(R.drawable.myImagePlaceHolder);

Поместите коды в onCrate и проверьте себя.

person Reaz Murshed    schedule 05.11.2015