我试图获取SlideMenuLayout left和内容视图的引用,但当我调用getSlideLeftView()
时,它返回null!
代码如下:
<?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>
根活动:
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();
}
}
}
发布于 2020-12-10 04:06:02
从SlideMenuLayout源代码中,我看到左滑动菜单视图、右滑动菜单视图、内容视图仅在onMeasure()
方法内部初始化,因此您需要将代码更改为:
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();
}
});
https://stackoverflow.com/questions/65223601
复制相似问题