Questions tagged «android-support-library»

Android支持库包含来自较新平台的反向移植API和提供实用程序功能的API。


19
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 …

12
如何更改工具栏主页图标颜色
我正在使用android.support.v7.widget.Toolbar,并从这篇文章中了解了如何将汉堡包图标的颜色更改为白色,但是当我打电话时,向上/向后箭头仍然是深色 setDisplayHomeAsUpEnabled(true); 如何将箭头也变白? 这是我调用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>

10
如何从片段获取工具栏?
我ActionBarActivity有NavigationDrawer和使用support_v7 Toolbar的动作条。在我的片段之一中,工具栏具有自定义视图。在其他片段中Toolbar应显示标题。 如何Toolbar从片段中获取用于定制的实例?我可以使用获取ActionBar getActivity().getActionBar(),但是如果我调用setTitle()该实例ActionBar,它什么也不做。 UPD: 就我而言 ((ActionBarActivity) getActivity()).getSupportActionBar().setTitle(); (正如MrEngineer13所说)在第一次创建片段时不起作用,因为我是从onHiddenChanged()调用它的。现在,我向onCreateView()添加了一个,并且工作正常。

6
从片段ActionBarCompat内部获取getSupportActionBar
我正在启动一个使用AppCompat/ActionBarCompatin v7支持库的新项目。我试图弄清楚如何getSupportActionBar在片段中使用from。我托管片段的活动可以扩展ActionBarActivity,但是我没有看到类似的Fragments支持类。 从我的片段中 public class CrimeFragment extends Fragment { //... getActivity().getSupportActionBar().setSubtitle(R.string.subtitle); // getSupportActionBar is not defined in the v4 version of Fragment //... } 使用它的Google页面(http://android-developers.blogspot.in/2013/08/actionbarcompat-and-io-2013-app-source.html)表示,该v4片段应该没有变化。我是否需要将所有getActivity()呼叫投射到ActionBarActivity?这似乎是糟糕的设计。

13
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); …

11
ViewPager.setOffscreenPageLimit(0)不能按预期工作
我在ViewPager实例中使用的片段占用大量资源,因此我只想一次加载一个。当我尝试以下操作时: mViewPager.setOffscreenPageLimit(0); mViewPager.setAdapter(mPagerAdapter); 我的FragmentStatePagerAdapter.getItem(int position)覆盖函数被调用了3次,这是我调用时发生的情况mViewPager.setOffscreenPageLimit(1)。我希望它只被调用一次,因为我指定了0个屏幕外页面。 我相信我会正确地调用所有内容,因为如果调用mViewPager.setOffscreenPageLimit(2),它会FragmentStatePagerAdapter.getItem(int position)被调用5次,正如我期望的那样。 ViewPager是否至少需要1个离屏页面,或者我在这里做错了什么?

16
嵌套片段在过渡动画期间消失
这里的情景:活动包含片段A,又使用getChildFragmentManager()添加片段A1,并A2在其onCreate像这样: getChildFragmentManager() .beginTransaction() .replace(R.id.fragmentOneHolder, new FragmentA1()) .replace(R.id.fragmentTwoHolder, new FragmentA2()) .commit() 到目前为止,一切都很好,一切正常。 然后,我们在Activity中运行以下事务: getSupportFragmentManager() .beginTransaction() .setCustomAnimations(anim1, anim2, anim1, anim2) .replace(R.id.fragmentHolder, new FragmentB()) .addToBackStack(null) .commit() 在过渡期间,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() 我要实现的效果很简单-我想运行片段(anim2)上的exit(或应该是popExit?)动画,A从而对整个容器(包括其嵌套的子代)进行动画处理。 有什么方法可以实现? 编辑:请在这里找到一个测试用例 Edit2:感谢@StevenByle促使我继续尝试使用静态动画。显然,您可以基于每个操作设置动画(不是整个事务的全局动画),这意味着子级可以具有不确定的静态动画集,而其父级可以具有不同的动画,并且整个事情可以在一个事务中完成。请参阅下面的讨论和更新的测试用例项目。

28
禁止用户在BottomSheet上拖动
我试图禁止用户拖动BottomSheet。我要禁用的原因有两点。1.防止ListView向下滚动。2.我不希望用户通过拖动来撤消操作,而是使用上的按钮BottomSheetView。这就是我所做的 bottomSheetBehavior = BottomSheetBehavior.from(bottomAnc); bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { @Override public void onStateChanged(@NonNull View bottomSheet, int newState) { if (newState == BottomSheetBehavior.STATE_EXPANDED) { //Log.e("BottomSheet", "Expanded"); } else if (newState == BottomSheetBehavior.STATE_COLLAPSED) { //Log.e("BottomSheet", "Collapsed"); } } @Override public void onSlide(@NonNull View bottomSheet, float slideOffset) { // React to dragging events bottomSheet.setOnTouchListener(new View.OnTouchListener() …


5
RequiresApi vs TargetApi android批注
RequiresApi和之间有什么区别TargetApi? Kotlin中的样本: @RequiresApi(api = Build.VERSION_CODES.M) @TargetApi(Build.VERSION_CODES.M) class FingerprintHandlerM() : FingerprintManager.AuthenticationCallback() 注意:FingerprintManager.AuthenticationCallback需要apiM 注意2:如果我不使用TargetApi,则皮棉会因错误而失败 class requires api level 23...

7
错误:渲染问题android.support.v7.internal.widget.ActionBarOverlayLayout找不到以下类
我只是android应用程序开发的初学者。当我在Android Studio 1.1.0上创建新项目时,它放弃了此错误“ 渲染问题找不到以下类android.support.v7.internal.widget.ActionBarOverlayLayout ” 现在,我已经在Google上进行了搜索,发现大多数人可能提供了3种解决方案。 他们说: 将api(从预览窗口窗格)从22更改为21,或者 将应用程序主题从“项目主题”更改为任何其他主题。 确保在项目结构->依赖项中已导入正确的appcompat-v7库, 请参考以下步骤:将支持库功能项目标识符添加到“依赖项”部分。例如,要包含appcompat项目,请在依赖项部分中添加编译“ com.android.support:appcompat-v7:18.0.+”,如以下示例所示: dependencies { ... compile "com.android.support:appcompat-v7:18.0.+" } 注意:我的android支持库是最新的(使用SDK Manager安装)。 按照前两个步骤,删除了错误。但是我觉得这些不是永久性的解决方案,第二步似乎只是一个临时解决方法。我也对第一步感到怀疑,如果要消除错误,我们将api从22更改为21,那么最后,我们的应用程序将无法在Android 5.1.1(API 22)中运行,它将仅限于Android 5.0仅.1以下(API 21)。我的怀疑合法吗?关于第三步,这是否是该问题的永久解决方案? PS:很抱歉标签不匹配,由于网站的声誉,不允许添加确切的标签

25
状态栏变为白色,并且在其后面不显示内容
我正在棉花糖上试用AppCompat。我想有一个透明的状态栏,但是它变成白色。我尝试了几种解决方案,但它们对我不起作用(透明状态栏不适用于windowTranslucentNavigation =“ false”,Lollipop:在statusBar后面绘制,其颜色设置为transparent)。这是相关的代码。 我的styles.xml <style name="Bacon" parent="Theme.Bacon"/> <style name="Theme.Bacon" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/theme_primary</item> <item name="colorPrimaryDark">@color/theme_primary_dark</item> <item name="colorAccent">@color/theme_accent</item> <item name="windowActionBar">false</item> <item name="windowActionBarOverlay">true</item> <item name="windowNoTitle">true</item> <item name="android:windowBackground">@color/background_material_light</item> </style> <style name="Theme.Bacon.Detail" parent="Bacon"/> v21 <style name="Bacon" parent="Theme.Bacon"> <item name="android:windowDrawsSystemBarBackgrounds">true</item> </style> <style name="Theme.Bacon.Detail" parent="Bacon"> <item name="android:statusBarColor">@android:color/transparent</item> </style> 活动 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" …

4
java.lang.NoClassDefFoundError:android / graphics / drawable / Icon
到目前为止,我仅针对使用根电话(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) 我从不在代码中使用android.graphics.drawable.Icon,所有用法都来自于我,android.support.v4.graphics.drawable.IconCompat我也从未在代码中使用该类。 …

22
如何将支持库的快餐栏文本颜色设置为android:textColor以外的颜色?
因此,我开始在设计支持库中使用新的Snackbar,但是我发现,当您在主题中定义“ android:textColor”时,它将应用于快餐栏的文本颜色。如果您的主要文字颜色为深色,这显然是一个问题。 有谁知道解决这个问题的方法或对我应该如何为文本上色的建议? 编辑2017年1月:(后答案) 虽然有一些自定义解决方案可以解决以下问题,但是最好提供正确的主题小吃店方法。 首先,您可能根本不应android:textColor在主题中进行定义(除非您真的知道使用主题的范围)。这设置了基本上每个连接到主题的视图的文本颜色。如果要在非默认视图中定义文本颜色,请android:primaryTextColor在自定义视图中使用并引用该属性。 但是,要将主题应用到Snackbar,请参考第三方材料doc上的本质量指南:http : //www.materialdoc.com/snackbar/(遵循编程主题实现以使其不依赖xml样式) 以供参考: // create instance Snackbar snackbar = Snackbar.make(view, text, duration); // set action button color snackbar.setActionTextColor(getResources().getColor(R.color.indigo)); // get snackbar view View snackbarView = snackbar.getView(); // change snackbar text color int snackbarTextId = android.support.design.R.id.snackbar_text; TextView textView = (TextView)snackbarView.findViewById(snackbarTextId); textView.setTextColor(getResources().getColor(R.color.indigo)); // change snackbar …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.