标签: android-support-library

如何从片段中获取工具栏?

ActionBarActivityNavigationDrawer和使用support_v7 Toolbar的动作条.在我的一个片段工具栏中有自定义视图.在其他片段中Toolbar应显示标题.

如何Toolbar从片段中获取自定义实例?我可以使用ActionBar getActivity().getActionBar(),但是如果我调用setTitle()这个实例ActionBar它什么都不做.

UPD:

就我而言

((ActionBarActivity) getActivity()).getSupportActionBar().setTitle();

(正如MrEngineer13所说)在第一次片段创建时不起作用,因为我从onHiddenChanged()调用它.现在我向onCreateView()添加更多一个,它工作正常.

android android-fragments android-actionbar android-support-library android-toolbar

102
推荐指数
4
解决办法
14万
查看次数

NestedScrollView中的ViewPager

我需要创建一个像Google Newsstand这样的界面,它是一种在折叠标题(垂直滚动)上的ViewPager(水平滚动).我的一个要求是使用Google IO 2015中提供的新设计支持库.(http://android-developers.blogspot.ca/2015/05/android-design-support-library.html)

基于Chris Banes(https://github.com/chrisbanes/cheesesquare)创建的示例,我已经达到了能够执行折叠行为但使用基本LinearLayout(没有水平滚动)的程度.

我试图用ViewPager替换LinearLayout,我得到一个空白屏幕.我玩过:宽度,重量和所有类型的视图组,但....仍然是一个空白的屏幕.似乎ViewPager和NestedScrollView彼此不喜欢.

我通过使用Horizo​​ntalScrollView尝试了一种解决方法:它可以工作,但我放弃了PagerTitleStrip功能的好处,并将焦点放在一个面板上(我可以在两个面板之间水平停​​止).

现在我没有更多的想法,如果有人能引导我找到解决方案......

谢谢

这是我最新的布局文件:

<?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:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="@dimen/header_height"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <include
                layout="@layout/part_header"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_collapseMode="parallax"/>

            <android.support.v7.widget.Toolbar
                android:id="@+id/activity_main_toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/activity_main_nestedscrollview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <android.support.v4.view.ViewPager
            android:id="@+id/activity_main_viewpager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#FFA0"/>


    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

android android-layout android-viewpager android-support-library

102
推荐指数
11
解决办法
7万
查看次数

过渡动画期间嵌套片段消失

这里的情景:活动包含片段A,又使用getChildFragmentManager()添加片段A1,并A2在其onCreate像这样:

getChildFragmentManager()
  .beginTransaction()
  .replace(R.id.fragmentOneHolder, new FragmentA1())
  .replace(R.id.fragmentTwoHolder, new FragmentA2())
  .commit()
Run Code Online (Sandbox Code Playgroud)

到目前为止,这么好,一切都按预期运行.

然后,我们在Activity中运行以下事务:

getSupportFragmentManager()
  .beginTransaction()
  .setCustomAnimations(anim1, anim2, anim1, anim2)
  .replace(R.id.fragmentHolder, new FragmentB())
  .addToBackStack(null)
  .commit()
Run Code Online (Sandbox Code Playgroud)

在转换期间,enter片段的动画B正确运行,但片段A1和A2完全消失.当我们使用"后退"按钮恢复事务时,它们会正确初始化并在popEnter动画期间正常显示.

在我的简短测试中,它更奇怪 - 如果我为子片段设置动画(见下文),exit当我们添加片段时,动画会间歇性地运行B

getChildFragmentManager()
  .beginTransaction()
  .setCustomAnimations(enter, exit)
  .replace(R.id.fragmentOneHolder, new FragmentA1())
  .replace(R.id.fragmentTwoHolder, new FragmentA2())
  .commit()
Run Code Online (Sandbox Code Playgroud)

我想要实现的效果很简单 - 我希望片段(anim2)上的exit(或应该是popExit?)动画A运行,为整个容器(包括其嵌套的子容器)设置动画.

有没有办法实现这一目标?

编辑:请在这里找到一个测试用例

编辑2:感谢@StevenByle推动我继续尝试使用静态动画.显然你可以在每个操作的基础上设置动画(不是整个事务的全局),这意味着孩子们可以有一个不确定的静态动画集,而他们的父可以有不同的动画,整个事情可以在一个事务中提交.请参阅下面的讨论和更新的测试用例项目.

android android-fragments android-support-library android-nested-fragment

99
推荐指数
5
解决办法
2万
查看次数

如何更改工具栏主页图标颜色

我正在使用android.support.v7.widget.Toolbar并从这篇文章中了解如何将汉堡包图标的颜色更改为白色,但当我调用时,向上/向后箭头仍然是深色

setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)

我怎样才能使箭头变白?

当我调用setDisplayHomeAsUpEnabled()时,这是我的工具栏的样子:

在此输入图像描述

...这是我的styles.xml文件的相关部分:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">#194C5F</item>
    <item name="colorAccent">@color/accent</item>
    <item name="drawerArrowStyle">@style/WhiteDrawerIconStyle</item>
</style>

    <style name="WhiteDrawerIconStyle" parent="Widget.AppCompat.DrawerArrowToggle">
        <item name="spinBars">true</item>
        <item name="color">@android:color/white</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

icons android toolbar android-support-library

99
推荐指数
11
解决办法
12万
查看次数

ViewPager.setOffscreenPageLimit(0)无法按预期工作

我在我的ViewPager实例中使用的片段是非常耗费资源的,所以我只想一次加载一个.当我尝试以下内容时:

mViewPager.setOffscreenPageLimit(0);
mViewPager.setAdapter(mPagerAdapter);
Run Code Online (Sandbox Code Playgroud)

我的FragmentStatePagerAdapter.getItem(int position)覆盖功能被调用3次,这是我打电话时发生的事情mViewPager.setOffscreenPageLimit(1).我希望它只被调用一次,因为我指定了0个屏幕外页面.

我相信我正在正确地呼唤一切,因为如果我打电话mViewPager.setOffscreenPageLimit(2),FragmentStatePagerAdapter.getItem(int position)就像我期望的那样被召唤5次.

ViewPager是否需要至少1个屏幕外页面,或者我在这里做错了什么?

android android-viewpager android-support-library

97
推荐指数
4
解决办法
7万
查看次数

错误:渲染问题无法找到以下类android.support.v7.internal.widget.ActionBarOverlayLayout

我只是Android应用程序开发的初学者.当我在Android Studio 1.1.0上创建一个新项目时,它放弃了这个错误" 渲染问题无法找到以下类:android.support.v7.internal.widget.ActionBarOverlayLayout "

现在我在google上搜索了这个,我发现大多数人可能会给出3个解决方案.

他们说:

  1. 将api(从预览窗口窗格)从22更改为21,或者

  2. 将应用主题从"项目主题"更改为任何其他主题.

  3. 一定要在项目结构中导入正确的appcompat-v7库 - >依赖项, 请参考以下步骤:将支持库功能项目标识符添加到依赖项部分.例如,要包含appcompat项目,请将compile"com.android.support:appcompat-v7:18.0.+"添加到依赖项部分,如以下示例所示:

dependencies {
    ...
    compile "com.android.support:appcompat-v7:18.0.+" }
Run Code Online (Sandbox Code Playgroud)

注意:我的android支持lib是最新的(使用SDK Manager安装它).

按照前两个步骤,删除错误.但我觉得这些不是永久的解决方案,第二步似乎就像一个临时的解决方法.我对第一步也有疑问,如果要删除错误,我们将api从22更改为21,最后,我们的应用程序将无法在Android 5.1.1(API 22)中运行,它将仅限于Android 5.0 .1及以下(API 21).我的疑惑有效吗?关于第三步,它是这个问题的永久解决方案吗?

PS:很抱歉标注不匹配,由于网站声誉,不允许添加确切的标记

android android-layout android-support-library

95
推荐指数
3
解决办法
10万
查看次数

95
推荐指数
6
解决办法
10万
查看次数

来自Fragment ActionBarCompat内部的getSupportActionBar

我正在开始一个使用AppCompat/ActionBarCompatin v7支持库的新项目.我试图找出如何getSupportActionBar在片段中使用from.我承载片段的活动扩展了ActionBarActivity,但我没有看到片段的类似支持类.

从我的片段中

    public class CrimeFragment extends Fragment {
          //...

          getActivity().getSupportActionBar().setSubtitle(R.string.subtitle); // getSupportActionBar is not defined in the v4 version of Fragment

          //...
    }
Run Code Online (Sandbox Code Playgroud)

使用它的谷歌页面(http://android-developers.blogspot.in/2013/08/actionbarcompat-and-io-2013-app-source.html)表示v4片段应该没有变化.我是否需要将所有getActivity()电话投入ActionBarActivity?这似乎是糟糕的设计.

android android-fragments android-support-library android-actionbar-compat

94
推荐指数
6
解决办法
8万
查看次数

Appcompatv7 - v21导航抽屉不显示汉堡包图标

我正在使用最新的appcompat支持库实现棒棒糖风格的导航抽屉,但问题是汉堡包图标永远不会显示.仅显示后退图标.

这是我的活动代码

import android.os.Bundle;
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.View;

public class Home extends ActionBarActivity {

private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    initViews();
}


private void initViews(){

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);


    toolbar.setTitleTextColor(getResources().getColor(android.R.color.white));
    setSupportActionBar(toolbar);

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,toolbar ,  R.string.drawer_open, R.string.drawer_close) { 

        /** Called when a drawer has settled in a completely closed state. */ 
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            //getActionBar().setTitle(mTitle);
            //invalidateOptionsMenu(); …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-support-library android-navigation

94
推荐指数
7
解决办法
6万
查看次数

java.lang.NoClassDefFoundError:android/graphics/drawable/Icon

到目前为止,我只为一位使用root手机的用户(SM-G900R7 Android 4.4.2)收到此错误.错误是这样的:

Fatal Exception: java.lang.NoClassDefFoundError: android/graphics/drawable/Icon
       at java.lang.Class.getDeclaredMethods(Class.java)
       at java.lang.Class.getDeclaredMethods(Class.java:656)
       at android.view.ViewDebug.getExportedPropertyMethods(ViewDebug.java:960)
       at android.view.ViewDebug.exportMethods(ViewDebug.java:1047)
       at android.view.ViewDebug.dumpViewProperties(ViewDebug.java:997)
       at android.view.ViewDebug.dumpViewProperties(ViewDebug.java:983)
       at android.view.ViewDebug.dumpView(ViewDebug.java:900)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:870)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
       at android.view.ViewDebug.dump(ViewDebug.java:793)
       at android.view.ViewDebug.dispatchCommand(ViewDebug.java:416)
       at android.view.ViewRootImpl$W.executeCommand(ViewRootImpl.java:6258)
       at android.view.IWindow$Stub.onTransact(IWindow.java:65)
       at android.os.Binder.execTransact(Binder.java:404)
       at dalvik.system.NativeStart.run(NativeStart.java)
Run Code Online (Sandbox Code Playgroud)

我从不在我的代码中使用android.graphics.drawable.Icon,所有用法都是来自android.support.v4.graphics.drawable.IconCompat我也从不在我的代码中使用该类...

顺便说一句,我的支持库是 version 26.0.0, my minSdkVersion is 15 targetSdkVersion is 26.

谢谢

android noclassdeffounderror android-support-library

94
推荐指数
3
解决办法
9722
查看次数