我是android编程的新手,我正在尝试在ActionBar上创建一个计数器(在我的工具栏中)。 我已经添加了背景(一个圆圈),但现在我需要输入一个由于按钮而减少的下一个(数字)。 抱歉我的英文不好,我希望有人可以帮助我,我只需要一个代码库就可以开始工作了。
<?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 :(得分:0)
试试这个:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); // use whatever id you have for your toolbar
setSupportActionBar(toolbar);
然后在按钮的onClickListener
中设置您需要的任何数字作为标题:
getSupportActionBar().setTitle("" + number - 1);
答案 1 :(得分:0)
您好使用此功能,其中 resId 是您的可绘制ID:
public void setHomeAsUpIndicator(int resId) {
if (getSupportActionBar() != null)
getSupportActionBar().setHomeAsUpIndicator(resId);
}
答案 2 :(得分:0)
你手上有两个问题。首先是在圆圈或气泡中显示文字。其次,您希望能够在Toolbar
(或ActionBar
)中显示该文字,并能够更改文字。
要解决您的第一个问题,我建议您创建ShapeDrawable
:
<?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>
您可能需要弄乱8dp
的半径,使其看起来更圆,但无论文本有多长,这都将允许视图扩展。最后,创建一个使用此ShapeDrawable
作为背景的布局:
<?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"/>
要解决您的第二个问题,您可以将此TextView
用作ActionLayout
的{{1}}:
MenuItem
然后,您可以在<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"/>
中获取TextView
:
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);
}
,您可以随时更改文字:
TextView