2016-07-18 8 views
0

Ich bin ein Neuling in Android-Programmierung und ich versuche, einen Zähler auf der ActionBar (In meinem Fall Toolbar) zu erstellen. Ich habe bereits den Hintergrund (einen Kreis) hinzugefügt, aber jetzt muss ich eine nächste (Zahl) eingeben, die als Ergebnis einer Schaltfläche abnimmt. Entschuldigung für mein schlechtes Englisch und ich hoffe, dass mir jemand helfen kann, ich brauche nur eine Codebasis, um daran zu arbeiten.Gewusst wie: dynamische Änderung Aktion Schaltflächensymbol oder in einen Text

<?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"> 
<item 
    android:id="@+id/mex_box" 
    android:icon="@drawable/ic_brightness_1_black_36dp" 
    android:orderInCategory="100" 
    android:title="@string/mex_counter" 
    android:visible="true" 
app:showAsAction="ifRoom" /> 

<item 
android:id="@+id/users_list" 
android:icon="@drawable/ic_people_black_36dp" 
    android:title="@string/contacts_list" 
    android:orderInCategory="100" 
    android:visible="true" 
    android:clickable="true" 
    app:showAsAction="ifRoom"/> 
</menu> 

MainActivity:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    menu.clear(); // clears all menu items.. 
    getMenuInflater().inflate(R.menu.main_action_menu, menu); 
    return true; 
} 
+0

Vielen Dank Jungs, aber mein Zähler ist ein Element der Aktionstasten, nicht das Logo oder den Titel – gvnrs

+0

Uh der Titel schon sagt, wie dynamisch die sich ändern action bar icon das ist, warum ich diese Antwort posten – AmirG

+0

Was hast du [versucht] (http://stackoverflow.com/help/how-to-ask)? Sende deinen Code. – Bryan

Antwort

0

Sie haben zwei Fragen an den Händen. Zuerst wird Text in einem Kreis oder einer Blase angezeigt. Zweitens möchten Sie in der Lage sein, diesen Text in Ihrem Toolbar (oder ActionBar) anzuzeigen, mit der Möglichkeit, den Text zu ändern.

Ihr erstes Problem zu lösen, würde ich vorschlagen, ein ShapeDrawable erstellen:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <solid android:color="#FF000000" /> 
    <corners android:bottomRightRadius="8dp" 
     android:bottomLeftRadius="8dp" 
     android:topRightRadius="8dp" 
     android:topLeftRadius="8dp"/> 

</shape> 

Sie mit dem Radius von 8dp zu verwirren müssen, um sie kreisförmig aussehen, aber das wird die Ansicht erlauben zu erweitern egal wie lange der Text kommt. Schließlich erstellen Sie ein Layout, das diese ShapeDrawable als Hintergrund verwendet:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:textSize="12sp" android:textColor="?android:attr/textColorPrimary" 
    android:background="@drawable/label_shape_drawable"/> 

Um Ihr zweites Problem zu lösen, können Sie dieses TextView als ActionLayout für Ihre MenuItem verwenden:

<item android:id="@+id/mex_box" android:orderInCategory="100" 
    android:title="@string/mex_counter" android:visible="true" 
    app:showAsAction="always" app:actionLayout="@layout/view_label"/> 

Dann können Sie erhalten Ihre TextView in onCreateOptionsMenu:

private TextView mLabelTextView; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main_action_menu, menu); 

    MenuItem menuItem = menu.findItem(R.id.mex_box); 
    mLabelTextView = (TextView) menuItem.getActionView(); 

    return super.onCreateOptionsMenu(menu); 
} 

Dann mit dem TextView auf der Hand, können Sie den Text ändern, wenn Sie mögen:

mLabelTextView.setText(newText); 
0

Versuchen Sie folgendes:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); // use whatever id you have for your toolbar 
setSupportActionBar(toolbar); 

Dann setzen, was Zahl, die Sie als Titel müssen im onClickListener Ihrer Taste:

getSupportActionBar().setTitle("" + number - 1); 
+0

Vielen Dank Jungs, aber mein Zähler ist ein Element der Aktion Tasten, nicht das Logo oder der Titel – gvnrs

+0

Bitte erläutern Sie Ihr Problem ein wenig mehr. –

+0

Ich habe ein schwarzes Kreissymbol als Aktionsleisten-Taste, jetzt muss ich eine Zahl eingeben, um dynamisch zu ändern, oder als Symbol einen schwarzen Kreis mit einer Zahl (zB 15) und als Ergebnis eines Knopfes klicken, wird das Symbol wechsel mit antaher als balck circle mit 14 – gvnrs

0

Hallo Verwenden Sie diese Funktion wo RESID ist Ihre ziehbar ID:

public void setHomeAsUpIndicator(int resId) { 
    if (getSupportActionBar() != null) 
     getSupportActionBar().setHomeAsUpIndicator(resId); 
} 
+0

Vielen Dank Jungs aber mein Counter ist ein Item der Action Buttons, nicht das Logo oder der Titel – gvnrs