Android Studio 在工具栏上看不到按钮

r3i60tvu  于 2023-02-24  发布在  Android
关注(0)|答案(1)|浏览(260)

我在RelativeLayout中的Toolbar元素之后放置了一个基本的Button,但是在它上面看不到它(应该是一个“shuffle”白色图标):

下面是XML:

<Button
    android:id="@+id/btnRandom"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_alignParentEnd="true"
    android:layout_centerVertical="true"
    android:layout_marginEnd="10dp"
    android:background="@drawable/ic_shuffle">
</Button>

我错过了什么?例如,它确实适用于FloatingActionButton
下面是完整的XML:

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 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"
    android:background="@drawable/mxhbg"
    android:id="@+id/drawer_layout"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity"
    tools:openDrawer="start">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/mxhbg"
        android:orientation="vertical"
        android:weightSum="10">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="54dp"
            android:orientation="horizontal">

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <androidx.appcompat.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    android:background="@color/colorPrimary"
                    android:elevation="4dp"
                    android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"></androidx.appcompat.widget.Toolbar>

                <Button
                    android:id="@+id/btnRandom"
                    android:layout_width="40dp"
                    android:layout_height="40dp"
                    android:layout_alignParentEnd="true"
                    android:layout_centerVertical="true"
                    android:layout_marginEnd="10dp"
                    android:background="@drawable/ic_shuffle">

                </Button>

            </RelativeLayout>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="9">

            <ListView
                android:id="@+id/listviewsongs"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:divider="@android:color/transparent"
                android:dividerHeight="10.0sp"
                android:padding="8dp">

            </ListView>

        </LinearLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">

            <Button
                android:id="@+id/hbtnpause"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_centerVertical="true"
                android:layout_marginEnd="10dp"
                android:layout_toLeftOf="@+id/hbtnnext"
                android:background="@drawable/ic_play_circle">

            </Button>

            <Button
                android:id="@+id/hbtnnext"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true"
                android:layout_marginEnd="10dp"
                android:background="@drawable/ic_next">

            </Button>

            <Button
                android:id="@+id/hbtnprev"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_centerVertical="true"
                android:layout_marginEnd="10dp"
                android:layout_toLeftOf="@+id/hbtnpause"
                android:background="@drawable/ic_prev">

            </Button>

            <TextView
                android:id="@+id/txtnp"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_toLeftOf="@+id/hbtnprev"
                android:ellipsize="marquee"
                android:marqueeRepeatLimit="marquee_forever"
                android:padding="10dp"
                android:scrollHorizontally="true"
                android:singleLine="true"
                android:textColor="#fff"
                android:textSize="18sp"
                android:textStyle="bold">

            </TextView>

        </RelativeLayout>
    </LinearLayout>
    <com.google.android.material.navigation.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:id="@+id/nav_view"
        app:headerLayout="@layout/nav_header"
        app:menu="@menu/drawer_menu">

    </com.google.android.material.navigation.NavigationView>

</androidx.drawerlayout.widget.DrawerLayout>
pwuypxnk

pwuypxnk1#

您尝试做的事情是可能的,如果您发布*.xml文件的完整代码,您将找到显示按钮的方法,但是您应该按照文档将此Button添加为icon
1.创建menu.xml文件

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_shuffle"
        android:icon="@drawable/ic_shuffle"
        android:title="@string/action_shuffle"
        app:showAsAction="always"/>

</menu>

1.在您的Activity中,您应该覆盖onOptionsItemSelected,并选择shuffle按钮的功能,如下所示

override fun onCreate() {
  ...
  setSupportActionBar(yourToolbar);
}

override fun onCreateOptionsMenu(menu: Menu) {
   menuInflater.inflate(R.menu.menu.xml)
   return true
}

override fun onOptionsItemSelected(item: MenuItem) = when (item.itemId) {
    R.id.action_shuffle -> {
        //Your code goes here
        true
    }

    else -> {
        super.onOptionsItemSelected(item)
    }
}

要按照您的方式执行此操作,您应该将Button添加到Toolbar中,如下所示

<androidx.appcompat.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    android:background="@color/colorPrimary"
                    android:elevation="4dp"
                    android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
                <Button
                    android:id="@+id/btnRandom"
                    android:layout_width="40dp"
                    android:layout_height="40dp"
                    android:layout_gravity="end"
                    android:layout_alignParentEnd="true"
                    android:layout_centerVertical="true"
                    android:layout_marginEnd="10dp"
                    android:background="@drawable/ic_shuffle"/>
</androidx.appcompat.widget.Toolbar>

相关问题