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

问题描述 投票:0回答:1

我正在尝试让另一个布局膨胀的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);

有任何想法吗?

java android navigation-drawer android-inflate
1个回答
0
投票

从你的帖子中不清楚你的DrawerLayout所处的布局。你说如果你没有给抽屉充气,你仍然可以点击它的菜单项,这是不可能的 - 视图需要膨胀才能显示。

我假设DrawerLayout在你的活动/片段布局中,因为你使用findViewById得到它的引用意味着一旦你调用setContentView(或Fragment中的等价物)它已经膨胀了。


player2布局是什么样的?当它膨胀并添加到DrawerLayout时,它会显示在其他视图之上。是否占用了抽屉物品的空间,因此点击事件不会传播到物品上?

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

© www.soinside.com 2019 - 2024. All rights reserved.