作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想更改 DrawerLayout 中的 TextView 。所以我用我自己的类扩展它。问题是当我调试这段代码时,永远不会调用 onDrawerOpened,特别是在打开抽屉时。
import android.support.v4.widget.DrawerLayout;
public class MyDrawerLayout extends DrawerLayout implements DrawerLayout.DrawerListener {
//Context context;
public MyDrawerLayout(Context c) {
this(c, null);
}
public MyDrawerLayout(Context c, AttributeSet attrs) {
this(c, attrs, 0);
}
public MyDrawerLayout (Context c, AttributeSet attrs, int defStyle) {
super (c, attrs, defStyle);
setDrawerListener(this);
}
public void onDrawerOpened(View drawerView) {
LinearLayout root = (LinearLayout)(drawerView.findViewById(R.id.root));
TextView t = (TextView) (root.findViewById(R.id.textView));
t.setText(((MainActivity) MainActivity.main_activity).globalScenarioName);
Snackbar.make(((MainActivity)MainActivity.main_activity).container, "NAVVIEW Open", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
public void onDrawerSlide (View drawerView, float slide) {
}
public void onDrawerClosed (View drawerView) {
}
public void onDrawerStateChanged (int newState) {}
}
activity_main.xml 布局看起来很标准:
<net.mycom.myproject.widget.MyDrawerLayout 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:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</net.mycom.myproject.widget.MyDrawerLayout>
最佳答案
在你的构造函数中,你应该调用 setDrawerListener(this)
,将你的类注册为监听器,因为它正在实现 DrawerLayout.DrawerListener
public MyDrawerLayout(Context c) {
this(c, null);
}
public MyDrawerLayout(Context c, AttributeSet attrs) {
this(c, attrs, 0);
}
public MyDrawerLayout (Context c, AttributeSet attrs, int defStyle) {
super (c, attrs, defStyle);
setDrawerListener(this);
}
您不必保留对上下文的引用。 View 具有方法 getContext()
关于android - DrawaerLayout.onDrawerOpened 从未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33659915/
背景 我最近在 merge 期间遇到了一个意外未 merge 的文档文件的问题。 无论出于何种原因,我搞砸了 merge 并有效地删除了文件(和其他几个文件),因为我忘记了它们的存在。 现在我想查看我
我在我的网站上使用旧的 mysql 版本和 php 版本 4。 我的表结构: | orders_status_history_id | orders_id | orders_status_id |
我是一名优秀的程序员,十分优秀!