首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >幻灯片菜单布局返回左侧和内容视图的空引用

幻灯片菜单布局返回左侧和内容视图的空引用
EN

Stack Overflow用户
提问于 2020-12-10 03:27:32
回答 1查看 24关注 0票数 0

我试图获取SlideMenuLayout left和内容视图的引用,但当我调用getSlideLeftView()时,它返回null!

代码如下:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".RootActivity">


<com.jkb.slidemenu.SlideMenuLayout
    android:id="@+id/mainSlideMenu"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    app:slideMode="left">
    <include layout="@layout/left_menu_layout" />
    <include layout="@layout/content_layout" />
</com.jkb.slidemenu.SlideMenuLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

根活动:

代码语言:javascript
运行
复制
public class RootActivity extends AppCompatActivity {

    private SlideMenuLayout leftMenu;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_root);

        leftMenu = (SlideMenuLayout) findViewById(R.id.mainSlideMenu);

        View left = leftMenu.getSlideLeftView(); // returns null !!!

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.container, DashboardFragment.newInstance())
                    .commitNow();
        }
    }


}
EN

回答 1

Stack Overflow用户

发布于 2020-12-10 12:06:02

SlideMenuLayout源代码中,我看到左滑动菜单视图、右滑动菜单视图、内容视图仅在onMeasure()方法内部初始化,因此您需要将代码更改为:

代码语言:javascript
运行
复制
leftMenu.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
    @Override
    public void onLayoutChange(View v, int left, int top, int right, int bottom,
                               int oldLeft, int oldTop, int oldRight, int oldBottom) {
        leftMenu.removeOnLayoutChangeListener(this);

        // Initialize left, right, content view here
        View leftView = leftMenu.getSlideLeftView(); 
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65223601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档