setHideOnContentScrollEnabled不适用于目标API 21+设备

时间:2015-11-20 17:44:27

标签: java android

我正在尝试修改我的应用程序以在用户滚动时隐藏我的ActionBar。目前,我们并不关心在棒棒糖前设备上支持此功能,但代码主要集中在预棒棒糖上,并且已根据需要进行了缓慢修改以适应API 21+。

我正在使用setHideOnContentScrollEnabled(true)来尝试隐藏滚动,然后设置hideoffset,但我所做的一切似乎都无法正常工作。我的片段进入下面显示的主要基础活动布局中的RecyclerView。

我还有一个ModuleActivity,它扩展了MainActivity并导入了android.app.ActionBar。我想知道这个问题是否可能与支持库有关,但我想如果情况确实如此。

MainActivity

 import android.content.Context;
import android.content.Intent;
import android.content.res.Resources.NotFoundException;
import android.graphics.PorterDuff.Mode;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;

public abstract class MainActivity extends FragmentActivity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  .
  .
  .
   if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
    }
    if (getContentResourceID() != 0) {
        setContentView(getContentResourceID());
    }

    @Override
    public void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    mProgressIndicator = (SimpleAssetImageView) findViewById(R.id.progressIndicator);
    if (getActionBar() == null) {
        return;
    }
    getActionBar().setDisplayHomeAsUpEnabled(true);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getActionBar().setHideOnContentScrollEnabled(true);
        getActionBar().setHideOffset(1);
    }

}

ModuleActivity.java

...
import android.app.ActionBar;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.StateListDrawable;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
...

public abstract class ModuleActivity extends MainActivity {


   .
   .
   .
   }

mainactivity_baselayout.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout    xmlns:android="http://schemas.android.com/apk/res/android"
                                    android:id="@+id/drawerLayout"
                                    android:layout_width="match_parent"
                                    android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

<include layout="@layout/default_drawer_menu_view"/>

</android.support.v4.widget.DrawerLayout>

的build.gradle

dependencies {

        compile "com.android.support:support-v4:22.0.0"
        compile "com.facebook.android:facebook-android-sdk:3.19.0"
        compile "com.android.support:cardview-v7:22.0.0"
        compile "com.android.support:recyclerview-v7:22.0.0"
        compile fileTree(dir: 'libs', include: '*.jar')
        compile 'com.google.android.gms:play-services-maps:6.5.87'
        compile 'com.google.android.gms:play-services-location:6.5.87'
        compile 'com.google.android.gms:play-services-base:6.5.87'loader:1.9.4'
      }

1 个答案:

答案 0 :(得分:0)

我认为如果您在RecyclerView的XML文件中设置nestedScrollingEnabled为true,则代码将正常工作。