gpt4 book ai didi

android - 如何在 android 操作栏菜单项中显示文本周围的边框?

转载 作者:行者123 更新时间:2023-11-29 15:04:46 25 4
gpt4 key购买 nike

我打算将类似 Chrome 的功能添加到我的 android 应用程序(请参见下面屏幕截图中的箭头),其中一个数字将显示在操作栏菜单中,周围有一个边框。我该怎么做?

enter image description here

最佳答案

让我们从框框开始:

/res/drawable/count_frame.xml

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

<corners android:radius="2dp"/>
<solid android:color="@android:color/transparent"/>
<stroke
android:width="2dp"
android:color="#FF404040"/>
</shape>

</inset>

count_frame 框将环绕 TextView:

/res/layout/menu_action_count_view.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView android:id="@+id/text"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_margin="12dp"
android:background="@drawable/count_frame"
android:gravity="center"
android:textColor="#FF000000"
android:textSize="13sp"
android:textStyle="bold"
tools:text="4"/>

TextView 将成为您的菜单项的操作 View 。 (使用 app: 命名空间,因为我假设您正在使用 AppCompatActivity):

/res/menu/menu_main.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">

<item
android:id="@+id/action_result_view"
android:title="@string/count"
app:actionLayout="@layout/menu_action_count_view"
app:showAsAction="always"/>

</menu>

现在,在您的 onCreateOptionsMenu 重写中,您可以获得操作 View 并进行设置。假设您的计数在 private int mCount;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
TextView count = (TextView) menu.findItem(R.id.action_result_view).getActionView();
count.setText(Integer.toString(mCount)); // so the int isn't mistaken for a resource id!
count.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// do your action here
}
});
return true;
}

当计数改变时,调用supportInvalidateOptionsMenu()

如果您想在此带边框的 TextView 的点击上显示溢出菜单,请在 onCreateOptionsMenu

中使用以下代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
final Menu m = menu;
final MenuItem item = menu.findItem((R.id.action_result_view));
TextView count = (TextView) menu.findItem(R.id.action_result_view).getActionView();
count.setText(Integer.toString(mCount)); // so the int isn't mistaken for a resource id!
count.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
m.performIdentifierAction(item.getItemId(), 0);
}
});
return true;
}

关于android - 如何在 android 操作栏菜单项中显示文本周围的边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38716391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com