добавление элемента на панель меток - PullRequest
0 голосов
/ 07 марта 2019

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

это код, в котором метка определена в AndroidManifest.xml:

<activity android:name=".activities.application.Limiter" android:label="@string/LIMITER_ACTION_BAR_TITLE" />

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Я создал пункт меню в новом XML-файле:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="40dp"
android:layout_height="40dp">
<item
    android:id="@+id/menu_item"
    android:icon="@drawable/circle_ok"
    app:showAsAction="always"
    android:title=""/>
</menu>

, а затем добавил этот код к активности:

private MenuItem menuItem;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_item, menu);
    menuItem = menu.findItem(R.id.menu_item);
    return true;
}

чтобы изменить значок, который я использовал:

public boolean onPrepareOptionsMenu(Menu menu) {

    switch(status) {
        case 0:
            menu.findItem(R.id.menu_item).setIcon(R.drawable.circle_ok);
            break;
        case 1:
            menu.findItem(R.id.menu_item).setIcon(R.drawable.circle_warning);
            break;
        case 2:
            menu.findItem(R.id.menu_item).setIcon(R.drawable.circle_alarm);
            break;
    }

    return super.onPrepareOptionsMenu(menu);
}

после изменения значения статуса invalidateOptionsMenu (); должен быть назван. Это результат: цвет меняется каждую секунду

Спасибо всем за помощь, надеюсь, кто-нибудь найдет это полезным!

0 голосов
/ 07 марта 2019

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

<android.support.v7.widget.Toolbar
    android:id="@+id/home_toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageView
            android:id="@+id/logoXmarks"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:src="@drawable/common_full_open_on_phone" />

    </RelativeLayout>

</android.support.v7.widget.Toolbar>
...