如何正确膨胀以尊重视图层次结构?

时间:2019-03-17 21:12:43

标签: java android navigation-drawer android-inflate

我正在尝试创建一个DrawerLayout,该DrawerLayout被另一个布局充实,其功能是在屏幕底部表示一个小型媒体播放器。7

主布局为抽屉布局。 我要添加的布局(我在主布局中添加的布局)是相对布局。

打开抽屉并尝试选择其中提到的某些方法时,一旦给DrawerLayout(主布局)充气,就不会触发它们。

如果我不给抽屉充气,而我点击了抽屉中的某些菜单项,则方法将正确触发。

我想这是我充气的方式,一旦打开抽屉,我尝试在充气视图上使用VIEW.GONE,但方法仍然是空的。

我如何调用方法:

 switch (menuItem.getItemId()) {

                        case R.id.nav_home: {
                            if (checkInternetConnection(getApplicationContext())) {
                                Log.i(LOG_TAG, "PROVJERA NETA  POVEZAN");
                                start_loader();
                            } else {
                                mEmptyStateTextView.setText("Cannot connect to network, please check your network status and try again.");
                                // Clear the adapter of previous earthquake data

                            }

                            break;
                        }
                        case R.id.nav_history: {
                            //pozoviHistory(null);
                            break;
                        }
                        case R.id.nav_favourite: {
                            Log.i(LOG_TAG, "ZOVI HFAV");
                            pozoviFavorites();
                            break;
                        }

                    }

这就是我为布局充气的方式:

DrawerLayout myLayout = (DrawerLayout) findViewById(R.id.cili_test);
                View itemInfo1 = getLayoutInflater().inflate(R.layout.player2, myLayout, true);

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

从您的帖子中尚不清楚DrawerLayout所处的布局。您说如果不给抽屉充气,您仍然可以点击菜单项,这是不可能的-视图需要按顺序进行充气以便显示。

我假设DrawerLayout在您的活动/片段布局中,因为您正在使用findViewById来获取对它的引用,这意味着一旦您调用setContentView(或Fragment中的等效项。


player2布局是什么样的?展开并添加到DrawerLayout后,它会显示在其他视图的顶部。它是否占用了抽屉项目的空间,因此单击事件不会传播到这些项目?

帖子中的更多代码将有助于发现问题。