没有操作栏的Android滑动菜单

时间:2018-11-06 03:07:28

标签: android kotlin

我仍然是Android的新手。帮助我从创建的imagebutton创建滑动菜单。这是我的app_header.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:theme="@style/ThemeOverlay.AppCompat.Dark"
                android:id="@+id/header"
                android:layout_width="match_parent"
                android:layout_height="100dp"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:background="@color/white"
                android:orientation="vertical"
                android:gravity="center"
                android:paddingBottom="7dp">

    <ImageView
            android:id="@+id/home"
            android:layout_width="125dp"
            android:layout_height="40dp"
            android:layout_alignBottom="@+id/menuButton"
            android:layout_alignParentStart="true"
            android:layout_marginBottom="5dp"
            android:layout_marginStart="100dp"
            android:scaleType="centerInside"
            android:src="@drawable/header"/>

    <ImageButton
            android:id="@+id/menuButton"
            android:layout_width="46dp"
            android:layout_height="60dp"
            android:layout_alignBottom="@+id/btnLogin"
            android:layout_alignParentStart="true"
            android:layout_marginStart="45dp"
            android:background="@color/white"
            android:scaleType="centerInside"
            android:onClick="showDrawer"
            app:srcCompat="@drawable/menu" />

    <ImageView
            android:id="@+id/btnLogin"
            android:layout_width="40dp"
            android:layout_height="60dp"
            android:layout_alignParentTop="true"
            android:layout_marginStart="-80dp"
            android:layout_toEndOf="@+id/btnRegister"
            android:scaleType="centerInside"
            app:srcCompat="@drawable/login" />

    <ImageView
            android:id="@+id/btnRegister"
            android:layout_width="40dp"
            android:layout_height="60dp"
            android:layout_alignParentEnd="true"
            android:layout_alignParentTop="true"
            android:layout_marginEnd="80dp"
            android:scaleType="centerInside"
            app:srcCompat="@drawable/register" />

    <ImageView
            android:id="@+id/searchView"
            android:layout_width="325dp"
            android:layout_height="35dp"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:background="@drawable/border"
            android:iconifiedByDefault="false"
            android:padding="10dp"
            android:queryHint="Cari di fobuma"
            android:scaleType="fitEnd"
            android:src="@drawable/search_icon"/>

    <android.support.design.widget.TextInputLayout
            android:id="@+id/textInput"
            android:layout_width="230dp"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentStart="true"
            android:layout_marginBottom="0dp"
            android:layout_marginStart="60dp"
            android:paddingBottom="3dp"
            android:textColorHint="@color/black">

        <android.support.design.widget.TextInputEditText
                android:layout_width="match_parent"
                android:layout_height="16dp"
                android:background="@color/transparant"
                android:hint="Cari di fobuma"
                android:maxLines="1"
                android:paddingBottom="10dp"
                android:textSize="13dp" />
    </android.support.design.widget.TextInputLayout>

</RelativeLayout>

还有我的MainActivity.kt

    class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

    }

    fun showDrawer(v: View) {
        val drawer = findViewById(R.id.drawer_layout) as DrawerLayout

        val slide = true

        if (slide) {
            drawer.openDrawer(Gravity.LEFT)
        } else {
            drawer.closeDrawer(Gravity.LEFT)
        }
    }
}

当我运行它时,当我单击图像按钮时,应用程序突然崩溃。 这是日志

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.fobuma.fixpage, PID: 26814
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
        at android.view.View.performClick(View.java:6891)
        at android.view.View$PerformClick.run(View.java:26083)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6938)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
        at android.view.View.performClick(View.java:6891) 
        at android.view.View$PerformClick.run(View.java:26083) 
        at android.os.Handler.handleCallback(Handler.java:789) 
        at android.os.Handler.dispatchMessage(Handler.java:98) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6938) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 
     Caused by: kotlin.TypeCastException: null cannot be cast to non-null type android.support.v4.widget.DrawerLayout
        at com.fobuma.fixpage.MainActivity.showDrawer(MainActivity.kt:25)
        at java.lang.reflect.Method.invoke(Native Method) 
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) 
        at android.view.View.performClick(View.java:6891) 
        at android.view.View$PerformClick.run(View.java:26083) 
        at android.os.Handler.handleCallback(Handler.java:789) 
        at android.os.Handler.dispatchMessage(Handler.java:98) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6938) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 
Application terminated.

而且,我在使用kotlin的代码中需要帮助。我不知道如何使用图像按钮创建幻灯片菜单。另外,我不使用操作栏。预先感谢。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

尝试仅扩展Activity,如下所示-

通过扩展此类,您的ActionBar将被隐藏。

class MainActivity : Activity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

    }

    fun showDrawer(v: View) {
        val drawer = findViewById(R.id.drawer_layout) as DrawerLayout

        val slide = true

        if (slide) {
            drawer.openDrawer(Gravity.LEFT)
        } else {
            drawer.closeDrawer(Gravity.LEFT)
        }
    }
}