代码之家  ›  专栏  ›  技术社区  ›  Dr Mido man

导航抽屉问题(不显示布局预览)

  •  12
  • Dr Mido man  · 技术社区  · 8 年前

    我创建了这个应用程序,我想使用导航抽屉菜单,但当我尝试在导航抽屉xml中编辑时,出现了“等待构建完成…”的问题发生了,我在android studio的左侧看不到布局previw

    联系

    activity_main_drawer

    此处未找到layout\u预览

    layout_preview

    我试过这个 soultion 解决这个问题,但不幸的是对我不起作用

    这是activity\u main\u抽屉。xml

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        tools:showIn="navigation_view">
    
        <group android:checkableBehavior="single">
            <item
                android:id="@+id/articles"
                android:icon="@drawable/ic_menu_camera"
                android:title="@string/articles" />
            <item
                android:id="@+id/windows"
                android:icon="@drawable/ic_menu_gallery"
                android:title="@string/windows" />
            <item
                android:id="@+id/linux"
                android:icon="@drawable/ic_menu_slideshow"
                android:title="@string/linux" />
            <item
                android:id="@+id/miscellaneous_devices"
                android:icon="@drawable/ic_menu_manage"
                android:title="@string/miscellaneous_devices" />
    
            <item
                android:id="@+id/information_security"
                android:icon="@drawable/ic_menu_manage"
                android:title="@string/information_security" />
    
            <item
                android:id="@+id/facebook"
                android:icon="@drawable/ic_menu_manage"
                android:title="@string/facebook" />
        </group>
    
        <item android:title="Communicate">
            <menu>
                <item
                    android:id="@+id/nav_share"
                    android:icon="@drawable/ic_menu_share"
                    android:title="Share" />
                <item
                    android:id="@+id/nav_send"
                    android:icon="@drawable/ic_menu_send"
                    android:title="Send" />
            </menu>
        </item>
    
    </menu>
    

    活动\u主

        package www.pro.cs_is.com.procsis;
    
    import android.os.Bundle;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.view.View;
    import android.support.design.widget.NavigationView;
    import android.support.v4.view.GravityCompat;
    import android.support.v4.widget.DrawerLayout;
    import android.support.v7.app.ActionBarDrawerToggle;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.Menu;
    import android.view.MenuItem;
    
    public class MainActivity extends AppCompatActivity
            implements NavigationView.OnNavigationItemSelectedListener {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
    
    
    
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            drawer.addDrawerListener(toggle);
            toggle.syncState();
    
            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            navigationView.setNavigationItemSelectedListener(this);
        }
    
        @Override
        public void onBackPressed() {
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            if (drawer.isDrawerOpen(GravityCompat.START)) {
                drawer.closeDrawer(GravityCompat.START);
            } else {
                super.onBackPressed();
            }
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
    
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                return true;
            }
    
            return super.onOptionsItemSelected(item);
        }
    
        @SuppressWarnings("StatementWithEmptyBody")
        @Override
        public boolean onNavigationItemSelected(MenuItem item) {
            // Handle navigation view item clicks here.
            int id = item.getItemId();
    
            if (id == R.id.miscellaneous_devices) {
                // Handle the camera action
            } else if (id == R.id.articles) {
    
            } else if (id == R.id.windows) {
    
            } else if (id == R.id.linux) {
    
            } else if (id == R.id.facebook) {
    
            } else if (id == R.id.information_security) {
    
            }
    
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
            return true;
        }
    }
    

    更新1 :在多次尝试之后,将IDE更新到3.1.2版后,这似乎是一个普遍的问题,到目前为止,只有一个 solution 尽管与预览中的顶部菜单选项类似,但@mtak建议使用该选项

    6 回复  |  直到 8 年前
        1
  •  21
  •   user8959091 user8959091    8 年前

    拆下管路

    tools:showIn="navigation_view"
    

    来自activity\u main\u抽屉。xml和重建。 这为我解决了同样的问题。 不知道为什么!!!

    AS 3.1.3(2018年6月8日)中解决的问题,以及 再次出现(2018年6月16日)!!!

    新的临时解决方案:

    1. 切断线路 tools:showIn="navigation_view" 从菜单文件。
    2. 关闭菜单文件。
    3. 重新打开它并粘贴该行。
    4. 转到“设计”并按原样查看菜单。

    如果关闭菜单文件并重新打开,问题又会出现! 文本中仍然没有预览。

        2
  •  4
  •   user9025311 user9025311    8 年前

    您可以尝试以下操作:

    • 建筑 然后再次尝试查看预览

    • 关闭当前布局,打开另一个布局,然后重新打开

        3
  •  1
  •   Myoch    7 年前

    由于要扩展AppCompatActivity,因此需要确保 样式。xml 您的AppTheme是AppCompat的后代

        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
         </style>
    

    这对我来说很有效,而公认的答案是没有帮助。

        4
  •  0
  •   mehdi    6 年前

    我找到了解决办法。删除这两条工具行并关闭/重新打开:

    xmlns:tools = "http://schemas.android.com/tools"
    
    tools:showIn = "navigation_view"
    
        5
  •  0
  •   Badar Khalil klifa    5 年前

    实际上,这个问题是因为你用 AppComactActivity 你的主题父对象不是 Theme.AppCompat 在中使用此主题作为默认主题 manifest.xml 在应用程序标记下。你的风格应该像

     <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
     </style>
    
    
    
        6
  •  -2
  •   Mohammad Maaz    7 年前

    重建这个项目对我有用