我创建了一个BottomNavigationView包含三个项目。其中之一是用户选项卡。
对于访客选项卡,有一个图像,但 TintColor 正在应用,我们看不到它。
那么如何去除特定项目的色调?
我试过了
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
item.setIconTintList(null);
}
Run Code Online (Sandbox Code Playgroud)
但没有运气。它适用于 api 26 以上
我的活动
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:itemIconTint="@drawable/bottom_color_state"
app:itemBackground="@color/colorAccent"
app:itemTextColor="@drawable/bottom_color_state"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/menu_bottom_navigation" />
Run Code Online (Sandbox Code Playgroud)
底部颜色状态.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white" android:state_enabled="true" />
<item android:color="@color/colorPrimaryDark" android:state_enabled="false" />
<item android:color="@color/white" android:state_selected="true" />
<item android:color="@color/off_white" android:state_selected="false" />
<item android:color="@color/white" android:state_checked="true" />
<item android:color="@color/off_white" android:state_checked="false" />
<item android:color="@color/off_white" />
</selector>
Run Code Online (Sandbox Code Playgroud)
提前致谢
这个答案对WebViews不起作用,这也不适用.所以这个问题专门用于使用WebView时.下面的代码加载带有文本输入字段的网页.单击文本输入字段时,键盘出现.
public class MainActivity extends AppCompatActivity {
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
final WebView webView = (WebView) findViewById(R.id.textFavorites);
BottomNavigationView bottomNavigationView = (BottomNavigationView)
findViewById(R.id.bottom_navigation);
webView.loadUrl("https://www.journaldev.com");
bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.action_favorites:
webView.loadUrl("https://www.journaldev.com");
break;
}
return false;
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
activity_main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/textFavorites"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="?attr/actionBarSize"/>
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemBackground="@color/colorPrimary"
app:itemIconTint="@color/white"
app:itemTextColor="@color/white"
app:menu="@menu/bottom_navigation_main" …Run Code Online (Sandbox Code Playgroud) 我是 Android 新手,一段时间以来我一直在努力保存片段的状态。我的应用程序在底部导航视图中有 5 个选项(我使用的是 Android 的默认 Activity)。在片段 A(实际上称为“SearchFragment”)中,我有一个按钮,单击时它会在文本框中设置一些文本。我想在导航到另一个片段并返回到片段 A 时保存该片段的状态(其中包含文本)(并且上一个按钮单击时的文本仍然存在)。
例如,根据我编写的代码,它会在更改方向时保存片段的状态,但在导航到其他片段然后返回时不会这样做。
我怎样才能更改代码?或者是否有其他方法可以保存导航时片段的当前状态?我真的需要一些帮助......感谢您的关注!
我的 mainActivity 如下所示:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView navView = findViewById(R.id.nav_view);
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_search, R.id.navigation_explore, R.id.navigation_trips, R.id.navigation_groups,R.id.navigation_profile)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(navView, navController);
}
}
Run Code Online (Sandbox Code Playgroud)
片段类如下所示:
public …Run Code Online (Sandbox Code Playgroud) android uinavigationbar android-fragments onsaveinstancestate bottomnavigationview
我想禁用选定项目的底部导航栏动画,以获得与未选定项目相同的文本/图标大小。
这是我的代码:
class BottomNavigationBarHome extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BottomNavigationBar(
unselectedItemColor: Colors.black38,
backgroundColor: Colors.white,
items: [
BottomNavigationBarItem(
icon: Icon(BalanceIcon.scale_balance, size: 15.0),
title: Text('Item 1', style: TextStyle(
),)
),
BottomNavigationBarItem(
icon: Icon(BalanceIcon.scale_balance),
title: Text('Item 2')
),
BottomNavigationBarItem(
icon: Icon(BalanceIcon.scale_balance),
title: Text('Item 3')
),
]
);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试设置相同的字体大小,动画仍然在这里
我有一个带有 BottomNavigationBar 和 IndexedStack 的屏幕,它根据底部栏索引交换子视图。
一切都很好,除了所有四个页面都是同时创建的,加载的数据相当繁重,并使应用程序减慢了几秒钟。
是否有一个设置允许我仅在点击相应选项卡时加载每个页面?
我正在尝试为我的应用程序制作一个昼夜主题。我在使底部导航视图从白色背景自动切换到黑色背景时遇到了麻烦。
这是我的底部导航代码,
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:background="@android:color/white"
app:itemIconTint="@drawable/bottomnavstate"
app:itemTextColor="@drawable/bottomnavstate"
app:menu="@menu/bottom_navigation_main" />
Run Code Online (Sandbox Code Playgroud)
建议使用白色背景以在印刷时产生涟漪效果。
我的主题如下:
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
<item name="android:colorPrimary">@color/primaryColor</item>
<item name="android:colorPrimaryDark">@color/primaryDarkColor</item>
<item name="android:colorAccent">@color/accentColor</item>
<item name="colorControlHighlight">@color/accentColor</item>
<item name="android:windowLightNavigationBar">true</item>
<item name="android:navigationBarColor">@android:color/background_light</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情:
1.添加了一个从app主题扩展的新主题,如下
<style name="BGTheme" parent="AppTheme">
<item name="android:background">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
将该主题添加到底部导航小部件,但我看到一个奇怪的涟漪效果,它延伸到导航栏之外,底部导航栏也失去了它的高度。
任何解决方案?
对于BottomNavigationView 的最后一个选项卡,我希望内容位于状态栏下方并使状态栏完全透明。这是按预期工作的,但底部跳转跳转在最后选项卡时跳起底部的空白空间。
SO中有类似的主题说将fitWindowSystems设置为false。我试过了,但没有帮助。
ExplorerFragment.java
public class ExplorerFragment extends Fragment {
public ExplorerFragment() {
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Window window = getActivity().getWindow();
window.getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE);
window.setStatusBarColor(ContextCompat.getColor(getContext(), android.R.color.transparent));
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
View decor = getActivity().getWindow().getDecorView();
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
}
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_explorer, …Run Code Online (Sandbox Code Playgroud) 我正在查看Material 的入门设计指南。我想知道我应该如何复制这种导航。它似乎包含了一个特殊的底部标签栏和 viewpager。没有 viewpager 的滑动功能,只有两个按钮倾斜到底部标签栏的两侧。
android tabbar android-viewpager bottomnavigationview android-bottomnav
如何以编程方式更改 BottomNavigation 中图标和文本之间的垂直间距?我发现的唯一方法是修改dimens.xml:
<dimen name="design_bottom_navigation_height" tools:override="true">60dp</dimen>
Run Code Online (Sandbox Code Playgroud)
但无法从代码中修改尺寸。我应该怎么办?当我们修改“design_bottom_navigation_height”时,如何找到哪个参数发生了变化?提前致谢。
android ×8
flutter ×2
java ×2
fullscreen ×1
menu ×1
menu-items ×1
tabbar ×1
tabs ×1
webview ×1