我在DrawerLayout和AppBarLayout上有问题。我需要添加DrawerLayout来制作NavigationDrawer。当我添加DrawerLayout时,整个布局用蓝色绘制。而导航抽屉只能通过滑动打开,不能通过单击按钮来工作。我不明白问题出在哪里。请帮帮我。
这是我的主要布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:expanded="false">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
app:tabMode="scrollable" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:menu="@menu/drawermenu" />
</android.support.v4.widget.DrawerLayout>
</android.support.design.widget.CoordinatorLayout>
而这就是我的主要活动代码:
package com.jeffe.tabstest;
import android.content.Intent;
import android.support.design.widget.NavigationView;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
private DrawerLayout drawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawerLayout = (DrawerLayout) findViewById(R.id.drawer);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar,
R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
viewPager = (ViewPager)findViewById(R.id.viewPager);
setupViewPager(viewPager);
tabLayout = (TabLayout)findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
assert navigationView != null;
navigationView.setNavigationItemSelectedListener(this);
}
@Override
public boolean onNavigationItemSelected(MenuItem item) {
int id = item.getItemId();
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
@Override
public void onBackPressed() {
assert drawerLayout != null;
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new MusicTab(), "Tab1");
adapter.addFragment(new AnimeTab(), "Tab2");
adapter.addFragment(new ArtistTab(), "Tab3");
adapter.addFragment(new AlbumTab(), "Tab4");
adapter.addFragment(new FavoritesTab(), "Tab5");
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
}
布局有问题,因为AppBar中的按钮都不起作用。但在我添加抽屉布局之前,一切都很完美。
不要使用ActionBardrawerToggle
和NavigationView
,这是最古老的方式。
试试这个-
toolbar = (Toolbar)findViewById(R.id.toolbar);
toolbar.setNavigationIcon(YOUR_MENU_ICON); //set your navigation icon
setSupportActionBar(toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
drawerLayout.openDrawer(drawerLayout);
}
});
希望能有所帮助:)
首先,我为我的英语水平不太好而道歉。我正在实习,我的任务是继续为公司开发一个内联网网站。我在实习开始时就拿到了代码,并开发了本地版本,具有本地网络服务器和本地数据库。这是我在公司服务器上部署更改版本的时候了,一旦我这样做了,到目前为止一直使用旧版本的站点会显示“ 内部服务器错误 500”。它来自什么,有人有解决方案吗?PS :该网站是用CakePhp开发的。
我正在尝试 我得到的输出是。但预期的是。
我希望连接的文件夹中有大约500个数据集。它们都有相同的列名:“年”、“邮政编码”、“Var1”、“Var2”、“Var3”。 我使用以下代码循环浏览文件夹中的文件: 当我输出数据集时,仅显示2019年的数据集和邮政编码000001。我打印了整个文件列表,我想要连接的数据集都在那里。有没有洞察到为什么会出现这种情况?谢谢
问题内容: SQL … 如您所见,它占用了文章的所有页面(每个页面均以长文本形式存储在单独的行中),并通过GROUP_CONCAT将它们分成单个长文本行。问题在于结果只有太多的字符,然后它被完全截断,丢失了大约90%的内容。CONCAT是否不能很好地处理长文本,还是我做错了其他事情? 问题答案: 根据MySQL手册,最大长度由系统变量定义,默认为1024。 可以使用以下命令来增加此值: 但是,应注
问题内容: 我已经使用timer_create()API实现了POSIX计时器,当计时器到期时,我将为其放置处理程序代码,这将生成SIGUSR1。现在的问题是,如果此程序收到另一个SIGUSR1,则将调用并捕获相同的信号处理程序。 有什么方法可以防止这种情况,以便处理程序可以捕获仅由计时器生成的信号? 问题答案: 这对您有用吗?(修改了手册页中示例中的代码。) 当捕捉到来自定时器的信号时,将显示。
问题内容: 我在package.json中添加了proxy,效果很好,但是在npm run build之后,CORS问题再次浮出水面,有人知道在React中npm run build之后如何处理CORS问题。 我试图使用各种方法在axios请求中添加标头。但是,我未能在axios请求中添加’Access-Control-Allow- Origin’:’*’。我的代码如下: package.json