Android: добавить кнопку в заголовок приложения? - PullRequest
5 голосов
/ 03 апреля 2010

Можно ли добавить кнопку в правый угол заголовка приложения?

например, добавить кнопку «обновить» к заголовку «Feed: my feeds»?

http://www.android.com/market/apps/feedr-lg-01.jpg альтернативный текст http://www.android.com/market/apps/feedr-lg-01.jpg

Ответы [ 4 ]

16 голосов
/ 03 апреля 2010

Самый простой способ сделать это, ИМХО, - это избавиться от стандартной строки заголовка (android:theme="@android:style/Theme.NoTitleBar" в элементе <activity> в манифесте) и поставить свою собственную "строку заголовка" в верхней части упражнения.

Обратите внимание, что стиль «кнопка в строке заголовка» больше похож на iPhone. У Android обычно это есть в меню параметров, поэтому пользовательский интерфейс менее загроможден (за счет двух нажатий для обновления).

3 голосов
/ 04 апреля 2010

Да, это решило проблему, у меня была ... урезанная версия ниже ...

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

    setContentView(R.layout.main);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, Set your layout for title here and mention your button in this layout);

   final TextView myTitleText = (TextView) findViewById(R.id.myTitle);
    if ( myTitleText != null ) {
        /*  your code here */
    }
}
3 голосов
/ 03 апреля 2010

Почему бы вам не попробовать это

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final boolean customTitle= requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

    setContentView(R.layout.main);

    if ( customTitle ) {
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, Set your layout for title here and mention your button in this layout);
    }

    final TextView myTitleText = (TextView) findViewById(R.id.myTitle);
    if ( myTitleText != null ) {
        myTitleText.setText("NEW TITLE");
        myTitleText.setBackgroundColor(Color.BLUE);
    }
}
1 голос
/ 03 апреля 2010

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

Здесь - ссылка на документацию для класса обработчика. Я бы начал с изучения основного использования обработчика. Затем протестируйте метод sendMessageDelayed, чтобы в конце каждого вызова вы перезапускали обработчик. Также обязательно создайте новый обработчик, только если ваша деятельность является основной, и не беспокойтесь об обновлении пользовательского интерфейса, если это не так. Добавление простого флага isActive во время паузы и возобновления - хороший способ проверить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...