我尝试在导航抽屉中创建一个ExpandableListView.我尝试了一个示例代码但是在编译之前我遇到了这个错误.
public class MainActivity extends Activity {
ExpandableListAdapter listAdapter;
ExpandableListView expListView;
List<String> listDataHeader;
HashMap<String, List<String>> listDataChild;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// get the listview
expListView = (ExpandableListView) findViewById(R.id.left_drawer);
// preparing list data
prepareListData();
listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild);
Run Code Online (Sandbox Code Playgroud)
错误在这一行:listAdapter = new ExpandableListAdapter(this,listDataHeader,listDataChild);
为什么它说无法实例化ExpandableListAdapter类型?
这是我的导航drawer_main的xml架构...我必须将用户图像放在上面的列表视图中,其他数据通过第二列表视图,就像soundcloud一样.但我在导航抽屉按钮中得到第二个listview,并通过移动边缘我得到第一个抽屉..帮我结合两个XML代码
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/content_frame"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ListView
android:id="@+id/linerlayout_drawer"
android:layout_height="match_parent"
android:layout_width="240dp"
android:layout_gravity="start"
android:background="@color/white"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:layout_weight="1"/>
<ListView
android:id="@+id/listview_drawer"
android:layout_height="match_parent"
android:layout_width="240dp"
android:layout_gravity="start"
android:background="@color/white"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:layout_weight="1" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
如果我将它们包装在线性布局中则会出错
04-08 21:08:36.605: E/AndroidRuntime(9373): FATAL EXCEPTION: main
04-08 21:08:36.605: E/AndroidRuntime(9373): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ZDevelopers.Workmania/com.ZDevelopers.Workmania.MainActivity}: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.support.v4.widget.DrawerLayout$LayoutParams
04-08 21:08:36.605: E/AndroidRuntime(9373): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
04-08 21:08:36.605: E/AndroidRuntime(9373): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
04-08 21:08:36.605: E/AndroidRuntime(9373): at android.app.ActivityThread.access$700(ActivityThread.java:159)
04-08 21:08:36.605: E/AndroidRuntime(9373): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
04-08 21:08:36.605: …Run Code Online (Sandbox Code Playgroud) 尝试从 android-support-v7:21 库实现新的抽屉切换,但未显示。代码片段:
public class MainActivity extends ActionBarActivity {
private Toolbar mToolbar;
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initToolbar();
}
private void initToolbar() {
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
mDrawerToggle = new ActionBarDrawerToggle(
this,
mDrawerLayout,
mToolbar,
R.string.drawer_open,
R.string.drawer_close
);
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
}
Run Code Online (Sandbox Code Playgroud) android android-support-library navigation-drawer android-toolbar
我正在开发一个具有设计要求的应用程序,因为它应该只有ActionBar上的Title而不是App Icon.我尝试了从StackOverflow中找到的各种解决方案
getActionBar().setDisplayUseLogoEnabled(false);
getActionBar().setDisplayShowHomeEnabled(false);
getActionBar().setIcon(null);
Run Code Online (Sandbox Code Playgroud)
但是到目前为止这些都没有工作,即使我试图通过制作透明的ic_launcher图标并将其放入manifest.xml来进行黑客/修复,但它会导致App安装图标变得透明.请帮忙
getActionBar().setDisplayShowHomeEnabled(false);
Run Code Online (Sandbox Code Playgroud)
在4.4 kitkat中完美运行,但在降级版本中显示了这样的后退箭头
我需要像这样在每个设备上工作

我正在尝试在android studio中实现导航抽屉。我发现的所有示例似乎都在使用ListView,我更喜欢linearLayout。
我遇到的问题是,当我调用isDrawerOpen时,我的应用程序崩溃并显示为“找不到重力向左的抽屉视图”。
我整天都在Stack和Google上进行搜索,但找不到任何有效的方法。我试过了:
navDrawerLayout.isDrawerOpen(Gravity.LEFT)
navDrawerLayout.isDrawerOpen(Gravity.RIGHT)
navDrawerLayout.isDrawerOpen(GravityCompat.START)
navDrawerLayout.isDrawerOpen(GravityCompat.END)
navDrawerLayout.isDrawerOpen(navLinearLayout)
android:gravity="left"
android:gravity="start"
android:gravity="left|start"
android:gravity="start|left"
android:gravity="right"
android:gravity="end"
android:gravity="right|end"
android:gravity="end|right"
Run Code Online (Sandbox Code Playgroud)
以上所有组合,但似乎无济于事。我还能做错什么导致这次崩溃?
MainActivity.java
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.View;
import android.widget.LinearLayout;
public class MainActivity extends ActionBarActivity {
private Toolbar toolbar;
private DrawerLayout navDrawerLayout;
private ActionBarDrawerToggle actionBarDrawerToggle;
private LinearLayout navLinearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loadToolbar();
loadNavigationDrawer();
}
private void loadNavigationDrawer() {
navDrawerLayout = (DrawerLayout) findViewById(R.id.nav_drawer_layout);
navLinearLayout = …Run Code Online (Sandbox Code Playgroud) 我已按照此链接实施使用Tabs的 tablayout Android Material Design
现在我做了什么,我使用片段代替Activity for tablayout.
以下是代码: -
public class HopitalTabLayoutFragment extends Fragment {
private TabLayout tabLayout;
private ViewPager viewPager;
public HopitalTabLayoutFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_hopital_tab_layout, container, false);
viewPager = (ViewPager)view. findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout)view. findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
return view;
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());
adapter.addFragment(new OneFragment(), "ONE");
adapter.addFragment(new TwoFragment(), "TWO");
adapter.addFragment(new ThreeFragment(), "THREE");
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends …Run Code Online (Sandbox Code Playgroud) android android-viewpager navigation-drawer android-tablayout
我已经看到很多关于在导航栏上面设置半透明状态栏的问题,如下所示:
但我想要实现的是拥有一个非半透明的状态栏,并使导航抽屉标题视图与操作栏的高度相同.这适用于前棒棒糖设备(API <21).但是对于API 21+,整个导航抽屉刚刚向上移动并与状态栏重叠,而不是位于状态栏下方.我能想到的唯一工作是手动设置layout_marginTopAPI 21+之后的设备的标题视图.有没有更好的解决方案来解决所有设备?
API <21:
API> 21:
styles.xml(V21):
<resources>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
DrawerLayout:
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<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="false"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
我试图设置fitsSystemWindows为两个true或false.没有变化.
这是初始化导航抽屉时我的黑客解决方案(这也是@AkashBhave回答):
LinearLayout navigationHeader = (LinearLayout) navigationView.getHeaderView(0);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
// This is make sure navigation header is below status bar
// This only required for devices API >= 21
LinearLayout.LayoutParams layoutParams =
(LinearLayout.LayoutParams) navigationHeader.getLayoutParams(); …Run Code Online (Sandbox Code Playgroud) 我知道我可以让导航标题滑过actionBar,但我只想将整个导航抽屉向下移动,因为我想保持"Back Pressed"按钮和actionBar始终可见.如何将导航抽屉全部降低,使其直接显示在actionBar下.
这是现在的样子,导航标题被actionBar切断:
这是导航抽屉的代码:
<android.support.design.widget.NavigationView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
app:menu="@menu/menu_info"
app:headerLayout="@layout/navigation_header"
app:itemIconTint="#000000"
app:itemBackground="@drawable/color_press_navigation"
android:id="@+id/Navigation_header"
>
</android.support.design.widget.NavigationView>
Run Code Online (Sandbox Code Playgroud) 我最近在Android Studio中打开了一个项目,并选择了一个导航抽屉活动.它创建了导航抽屉,除了它以我不喜欢的方式显示 - 导航抽屉显示在标题栏的顶部,例如:

相反,我希望它像:

在这个"正确"的示例中,标题栏 - "主页"与关闭箭头一起显示,同时导航抽屉打开.
文件来源:
app_bar_main.xml
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.avi12.soundcloudinstantdownloader.MainActivity"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"/>
</android.support.design.widget.AppBarLayout>
<RelativeLayout
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"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.avi12.soundcloudinstantdownloader.MainActivity"
tools:showIn="@layout/app_bar_main">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_margin="5dp"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="What this app can download:"/>
<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView"
android:layout_alignStart="@+id/textView"
android:layout_below="@+id/textView"
android:layout_marginLeft="17dp"
android:layout_marginStart="17dp"
android:text="Single tracks"/>
<TextView
android:id="@+id/textView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView8"
android:layout_alignStart="@+id/textView8"
android:layout_below="@+id/textView8"
android:text="Playlists, a.k.a albums"/>
<TextView
android:id="@+id/textView10" …Run Code Online (Sandbox Code Playgroud)