I am using new Material Bottom app bar in android. I have implemented it successfully but I don't know how to add custom menu items to the bar. Whenever I add the menu items they shows up as 3 dots only even if I provide the option android:showAsAction="always".
I want specific icons like the screenshot below.
But instead I get result like this.

Here is the layout code.
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottom_app_bar"
style="@style/Widget.MaterialComponents.BottomAppBar"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="bottom"
app:backgroundTint="@color/colorPrimaryDark"
app:fabCradleMargin="5dp"
app:fabAlignmentMode="center"/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content" …Run Code Online (Sandbox Code Playgroud) 我正在尝试Android 导航架构组件,并且还在研究材料设计指南.我真的受到以下设计的启发:
对于顶部工具栏,我可以设置它setSupportActionBar(toolbar),然后在MainActivity:
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
但是在尝试时我无法弄清楚如何在顶部和底部应用栏上为不同的片段实现菜单,特别是对于底部应用栏.
例如,我想在底部应用栏上显示一个喜欢的图标DetailFragment,但是MainActivity,它应该消失了.
我目前的代码:
主要活动
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
NavController navController = Navigation.findNavController(this, R.id.nav_host);
NavigationUI.setupActionBarWithNavController(this, navController);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(view -> Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show());
}
@Override
public boolean onSupportNavigateUp() …Run Code Online (Sandbox Code Playgroud) android android-layout android-jetpack android-bottomappbar androidx
我在布局中定义了一个底栏:
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottomBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:navigationIcon="@drawable/ic_menu_black_24dp" />
Run Code Online (Sandbox Code Playgroud)
导航图标是从"new vector drawable"向导生成的通用图标.有没有办法对它应用色调?
底栏不是活动操作栏.
到目前为止我尝试过的:
textColorPrimary颜色的主题controlColorNormal颜色的主题如果有一个解决方案也适用于通过从XML加载菜单(使用inflateMenu()或replaceMenu())提供的图标,那将是完美的.
我在协调器布局内使用底部应用栏。其余内容来自片段。片段内容被底部应用栏覆盖
因为我使用的是 bottomAppBar,所以它必须在 CoordinatorLayout 内,并且所有孩子也必须在其中。BottomAppBar 上方的所有布局都应该填充提醒的空间,但如果我这样做,底部的视图就会被覆盖。如何确保视图不与 BottomAppBar 重叠
<androidx.drawerlayout.widget.DrawerLayout
android:id="@+id/drawerLayout_main"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".main.MainActivity">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/coordinatorLayout"
android:layout_width="0dp"
android:layout_height="wrap_content">
</androidx.constraintlayout.widget.ConstraintLayout>
<fragment
android:id="@+id/fragment_main_navHost"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
android:layout_gravity="top"
app:navGraph="@navigation/nav_graph"/>
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottomAppBar_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:fabAlignmentMode="end"
app:fabCradleMargin="4dp"
app:hideOnScroll="true"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/navView_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/nav_header_layout"
app:menu="@menu/main_navigation"/>
Run Code Online (Sandbox Code Playgroud)
我需要的是确保替换片段的任何内容都不应被底部应用栏覆盖,并且它应该使用底部应用栏未使用的所有空白区域。我是另一个世界,内容应该在它上面,同时使用其余的空白区域并且仍然在协调器布局内。
android material-design android-coordinatorlayout android-bottomappbar
我正在jectpack composeandroid 应用程序中工作。所以我想使用 use bottomAppbar。从来没有找到任何例子有人可以帮忙吗?
我尝试使用AppBottomBar,并且希望能够像setExpanded在AppBarLayout中一样以编程方式隐藏或显示它。
我的布局就像
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
...
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:id="@+id/nested"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<fragment
android:id="@+id/navHost"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/home_nav" />
</androidx.core.widget.NestedScrollView>
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottomAppBar"
style="@style/Widget.MaterialComponents.BottomAppBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:backgroundTint="@color/colorPrimary"
app:fabAlignmentMode="center"
app:hideOnScroll="true"
app:layout_scrollFlags="scroll|enterAlways"
app:navigationIcon="@drawable/ic_menu"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
我尝试使用AppBottomBar的行为,但是不起作用。
我想为测试 android 应用程序创建下面的视图。这些是我创建视图所遵循的当前步骤:
当我运行应用程序时,视图如下图所示:
我曾尝试使用底部导航视图,主浮动操作按钮被膨胀为菜单项中的操作布局。使用这种方法只允许显示菜单项及其测试,但不显示浮动操作按钮。
什么是最好的使用方法。使用BottomAppBar 或使用BottomNavigationView。我正在尝试查看是否可以使用可用的材料组件而无需执行 hack。
XML 文件如下:
活动主
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_anchor="@id/bar"
app:srcCompat="@mipmap/sharp_local_atm_black_24" />
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:fabAlignmentMode="center"
app:fabCradleRoundedCornerRadius="0dp"
app:fabCradleMargin="0dp"
app:fabAnimationMode="slide"
app:labelVisibilityMode="labeled"
app:fabCradleVerticalOffset="8dp"
app:menu="@menu/app_bar_menu"
/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
菜单 XML:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/app_bar_home"
android:icon="@mipmap/sharp_home_black_24"
android:title="@string/home"
app:showAsAction="always"/>
<item
android:id="@+id/app_bar_wallet"
android:icon="@mipmap/sharp_account_balance_wallet_black_24"
android:title="@string/wallet"
app:showAsAction="always"/>
<item
android:id="@+id/app_bar_atm"
android:title="CASH"
app:showAsAction="always"/>
<item
android:id="@+id/app_bar_cart"
android:icon="@mipmap/sharp_shopping_cart_black_24"
android:title="@string/cart"
app:showAsAction="always"/>
<item
android:id="@+id/app_bar_more"
android:icon="@mipmap/sharp_menu_black_24"
android:title="@string/more"
app:showAsAction="always"/> …Run Code Online (Sandbox Code Playgroud) 使用导航 UI 创建底部应用程序栏导航BottomNavigationView,FragmentContainerView类似于示例应用程序NavigationAdvancedSample。
请注意,NavigationAndvancedSample应用程序似乎没有使用文档中描述的相同实现,因为它有一个使用自定义扩展方法的解决方法实现setupWithNavController。
使用.在MainActivity.ktNavHostFragment中创建 时为 Null 。BottomNavigationViewFragmentContainerView
可重现的错误和完整的代码示例可在BottomNavigationViewSample存储库中找到。
\n\n\n2020-05-15 12:39:19.117 18747-18747/com.example.bottomnavigationviewsample E/AndroidRuntime: 致命异常: main\n 进程: com.example.bottomnavigationviewsample, PID: 18747\n java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.example.bottomnavigationviewsample/com.example.bottomnavigationviewsample.MainActivity}:kotlin.TypeCastException:null 无法转换为非 null 类型 androidx.navigation.fragment.NavHostFragment\n 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)\n 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)\n 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java :83)\n 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)\n 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)\n 在 android.app.ActivityThread$ H.handleMessage(ActivityThread.java:2016)\n 在 android.os.Handler.dispatchMessage(Handler.java:107)\n 在 android.os.Looper.loop(Looper.java:214)\n 在 android.app .ActivityThread.main(ActivityThread.java:7356)\n 在 …
android android-fragments android-navigation android-architecture-navigation android-bottomappbar
我想知道什么是喷气背包中的 Scaffold 与一个BottomAppBar 示例 谁能帮助我
Scaffold
android android-bottomappbar android-jetpack-compose android-jetpack-compose-scaffold
我正在尝试从 material.io 测试 BottomAppBar 功能。但是,当我尝试运行应用程序时,我会立即崩溃:
> 10-20 22:21:25.067 27571-27571/com.example.asmox.bcl E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.asmox.bcl, PID: 27571
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.asmox.bcl/com.example.asmox.bcl.ViewActivity}: android.view.InflateException: Binary XML file line #33: Binary XML file line #33: Error inflating class android.support.design.bottomappbar.BottomAppBar
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: android.view.InflateException: Binary XML file line #33: Binary XML file line #33: Error inflating class android.support.design.bottomappbar.BottomAppBar
at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423) …Run Code Online (Sandbox Code Playgroud) android ×10
androidx ×2
android-architecture-navigation ×1
android-jetpack-compose-scaffold ×1
kotlin ×1