我正试图像BottomNavigationView
一样在TabLayout
的选定标签下显示一行,但是到目前为止,我找不到任何解决方案。
BottomNavigationView
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="@android:color/background_dark"
app:itemTextColor="@color/colorAshWhite"
app:itemIconTint="@color/colorAshWhite"
app:labelVisibilityMode="labeled"
app:menu="@menu/main_bottom_nav"/>
TabLayout
答案 0 :(得分:0)
为此,我有一个肮脏的技巧,
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.firstItem:
underlineSelectedItem(bottomNavigationView, R.id.firstItem);
break;
return false;
}
});
使用此方法
private void underlineSelectedItem(BottomNavigationView bottomNavigationView, int selectedID) {
for (int i = 0; i < bottomNavigationView.getMenu().size(); i++) {
MenuItem menuItem = bottomNavigationView.getMenu().getItem(i);
menuItem.setTitle(menuItem.getTitle().toString().replaceAll("[<u>/]", ""));
}
MenuItem menuItem = bottomNavigationView.getMenu().findItem(selectedID);
String currentText = (String) menuItem.getTitle();
String convertedText = "<u>" + currentText + "</u>";
menuItem.setTitle(Html.fromHtml(convertedText));
}
我知道这有点丑陋,但我认为没有其他方法可以做到。