标签: androiddesignsupport

android:如何使用CoordinatorLayout和半透明导航栏?

我一直在研究新的谷歌支持设计库.我正在努力使导航栏变得半透明,并在栏下方显示recyclerView的内容.

我正在测试5.1 nexus 5.我使用下面的项目作为测试项目.示例代码来自Chris Banes:https://github.com/chrisbanes/cheesesquare

我在下面添加了styles.xml

<item name="android:windowTranslucentNavigation">true</item>
Run Code Online (Sandbox Code Playgroud)

使导航栏半透明.

但是,我无法将CoordinatorLayout及其内容(recyclerView)显示在条形图下方.

我想要的是:

  1. recyclerView显示在导航栏下

  2. 快速返回是存在的,当隐藏appbar时,它不应该在半透明状态栏下面.状态栏应该能够完全隐藏向上滚动的部分.

android android-design-library androiddesignsupport

9
推荐指数
1
解决办法
4492
查看次数

当CollapsingToolbarLayout的子项时,不会调用Android布局行为

我试图layout_behavior在一个元素上设置一个子元素CollapsingToolbarLayout但是从不在iv_header视图上调用行为.当它固定在外面时,例如tv_follow视图,它可以很好地工作.

文档没有明确说明layout_behavior不能在一个AppBarLayout或那个范围内应用CollapsingToolbarLayout我因为它不工作而感到茫然.

<?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:id="@+id/header"
        android:layout_width="match_parent"
        android:layout_height="@dimen/full_header_height"
        android:focusable="true"
        android:focusableInTouchMode="true">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:id="@+id/iv_header"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                android:contentDescription="@null"
                app:layout_behavior="com.package.view.HidingBehavior"
                app:layout_collapseMode="parallax"
                android:src="@drawable/profile_background"/>

            <android.support.v7.widget.Toolbar
                android:id="@+id/header_toolbar"
                android:layout_height="@dimen/action_bar_height"
                android:layout_width="match_parent"
                android:background="@drawable/toolbar_dark_gradient_half"
                android:gravity="top"
                app:layout_collapseMode="pin"/>

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

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

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

    <TextView
        android:id="@+id/tv_follow"
        android:textSize="20sp"
        android:textColor="@android:color/white"
        android:text="@string/follow"
        android:drawableLeft="@drawable/comm_follow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_anchor="@id/header"
        app:layout_anchorGravity="center"
        app:layout_behavior="com.package.view.HidingBehavior"
        android:drawablePadding="8dp"
        android:gravity="center"
        android:visibility="gone"
        android:fitsSystemWindows="true"/>

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

行为被从设计支持库中的FloatingActionButton代码中拉出.

public class HidingBehavior extends CoordinatorLayout.Behavior<View>{ …
Run Code Online (Sandbox Code Playgroud)

android androiddesignsupport android-coordinatorlayout android-collapsingtoolbarlayout

9
推荐指数
1
解决办法
1万
查看次数

在嵌套片段中使用recyclerView的AppBarLayout

由于图像总是比文字更好,我向您呈现我当前的布局.

工具栏/选项卡位于带有viewPager的activity.xml中,recyclelerView位于viewPager中的片段内.因此,您可以向右/向左滑动以查看其他内容.

我的问题是我希望AppBarLayout在其滚动行为中绑定到第一个片段中的recyclerView,而不是其他片段.

在下面的代码中,我做了这个绑定,但它不起作用,因为recyclerView无法识别外部布局中的AppBarLayout .你有解决方法吗?

活动代码:

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:fab="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar_main"
            android:layout_width="match_parent"
            /* pretty stuff */
            app:layout_scrollFlags="scroll|enterAlways">

            <android.support.design.widget.TabLayout
                android:id="@+id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                /* pretty stuff */ />

        </android.support.v7.widget.Toolbar>

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

    <android.support.v4.view.ViewPager
        android:id="@+id/main_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.SupportFloatingActionsMenu
           ...>
           /* Code for a fancy fab w/ menu */

    </android.support.design.widget.SupportFloatingActionsMenu>

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

对于包含recyclerView的片段:

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.insa.burnd.view.MainActivity.NewsfeedFragment"
    android:id="@+id/fragment_newsfeed">

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

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

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

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

android android-fragments androiddesignsupport android-appbarlayout

9
推荐指数
2
解决办法
6432
查看次数

AlertDialog按钮文本颜色,支持库v24.2.1

我遇到了AlertDialog的问题.这些按钮不再使用accentColor来设置按钮文本颜色.

我正在使用最新的支持库v24.2.1.我通过以下方式在styles.xml中设置对话框的样式:

<style name="Base.Theme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:alertDialogTheme">@style/Widget.DialogStyle</item>
    <item name="alertDialogTheme">@style/Widget.DialogStyle</item>
</style>
Run Code Online (Sandbox Code Playgroud)

并且Widget.DialogStyle看起来像这样:

<style name="Widget.DialogStyle" parent="@style/Theme.AppCompat.Light.Dialog.Alert">
    <item name="android:colorAccent" tools:targetApi="lollipop">@color/primaryColor</item>
    <item name="colorAccent">@color/primaryColor</item>
    <item name="android:textColorPrimary">@color/primaryText</item>
    <item name="android:textColor">@color/primaryText</item>
    <item name="android:background">@color/backgroundColor</item>
    <item name="android:textAppearanceLarge">@color/primaryText</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

在app API低于24时,对话框按钮用colorAccent着色,但在API 24上,这不再是行为(文本是黑色,应该是橙色).请参阅以下屏幕截图.

有没有人知道如何让按钮上的accentColor?谢谢.

android android-layout android-alertdialog android-support-library androiddesignsupport

9
推荐指数
1
解决办法
2726
查看次数

CollapsingToolbarLayout - 设置expandedTitleTextAppearance和collapsedTitleTextAppearance可能会导致问题

在设计支持库(V 22.2.0)中,我在设置CollapsingToolbarLayout 的expandedTitleTextAppearancecollapsedTitleTextAppearance属性时遇到问题.

例如,如果我这样设置:

<android.support.design.widget.CollapsingToolbarLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        app:expandedTitleTextAppearance="@style/TransparentText"
        >
Run Code Online (Sandbox Code Playgroud)

和样式看起来像这样:

<style name="TransparentText">
    <item name="android:textColor">#00000000</item>
</style>
<style name="GreyText">
    <item name="android:textColor">#666666</item>
</style>
Run Code Online (Sandbox Code Playgroud)

文本没有显示但是当我尝试在工具栏折叠后展开工具栏时,应用程序将在Android 4.1上崩溃.

如果我把它设置为:

app:expandedTitleTextAppearance="@style/TransparentText"
app:collapsedTitleTextAppearance="@style/GreyText"
Run Code Online (Sandbox Code Playgroud)

它不再崩溃,但文本在崩溃时不会显示.

android androiddesignsupport

8
推荐指数
1
解决办法
5619
查看次数

带有SnackBar和CoordinatorLayout的FloatingActionButton不能与proguard一起使用

在启用proguard的情况下,这段简单的代码将无法正常工作:

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

    <Button
        android:id="@+id/show"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:layout_marginTop="40dp"
        android:text="Show snackbar" />


    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:layout_margin="16dp"
        android:src="@drawable/ic_save_white_24dp"
        app:layout_anchorGravity="bottom|right|end" />


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

期望的行为FloatingActionButton在显示SnackBar时已被推翻,但直到我禁用proguard才会发生.

没有教程也涵盖了这一点,因为新项目默认禁用了proguard;)

有人知道设计支持库的proguard配置吗?

android android-snackbar androiddesignsupport android-coordinatorlayout

8
推荐指数
1
解决办法
884
查看次数

ViewHolder中的嵌套RecyclerView会破坏折叠工具栏布局

我有一个在CoordinatorLayout中托管的垂直RecyclerView,具有折叠工具栏布局.此RecyclerView的ViewHolder包含另一个带有GridLayoutManager的RecyclerView.

这种嵌套的原因是内部RecyclerView显示的图片集合可以包含1-20张图片.我不知道会有多少张图片,但Grid的跨度必须始终为3.每次绑定ViewHolder时,我都会调整RecyclerView的布局参数以容纳内容.

如果没有CollapsingToolBarLayout,这很有效.但是,如果有一个折叠的工具栏,用我的手指在内部RecyclerView上滚动不会滚动折叠工具栏,但滚动另一个项目却会.

要重新强调,在绑定的ViewHolder中,如果我开始滚动除嵌套的RecyclerView之外的任何其他项目,滚动工作正常.但是,如果我在嵌套的RecyclerView上开始滚动,那么它会中断.

是否可以阻止内部RecyclerView上的滚动拦截,只允许父滚动?我希望内部的RecyclerView仍能处理点击.

以下是该现象的YouTube链接:https://youtu.be/fzj7HmqskzU

以下是父RecyclerView的XML:

<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=".MainActivityFragment">

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbars="vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:elevation="4dp"
        app:contentScrim="?attr/colorPrimary"
        app:layout_collapseParallaxMultiplier="0.7"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <View
            android:id="@+id/header_view"
            android:layout_width="match_parent"
            android:layout_height="192dp"
            android:animateLayoutChanges="true"
            android:background="@color/primary" />

        <android.support.v7.widget.Toolbar
            android:id="@+id/action_bar"
            android:layout_width="match_parent"
            android:layout_height="@dimen/abc_action_bar_default_height_material"
            android:elevation="4dp"
            app:layout_collapseMode="pin"
            app:popupTheme="@style/Theme.AppCompat.NoActionBar"
            app:theme="@style/Theme.AppCompat.NoActionBar" />
    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)

这是托管嵌套RecyclerView的主要ViewHolder:

public class SimpleAdapter extends RecyclerView.Adapter<SimpleAdapter.ViewHolder> {

private static final int MODEL_OBJECT = 1;

private List<ModelObject> modelObjects;

private Context context;

private int imageSize;

public SimpleAdapter(List<ModelObject> modelObjects) …
Run Code Online (Sandbox Code Playgroud)

android-recyclerview androiddesignsupport android-collapsingtoolbarlayout android-appbarlayout

8
推荐指数
2
解决办法
2619
查看次数

如何在填充TextInputLayout中包含的EditText字段时禁用浮动标签动画

当我预先填充EditText字段时,我希望能够将浮动标签放在适当的位置.加载视图时,在将文本设置为浮动标签之前,提示仍会显示在文本后面.在支持库的TextInputLayout中似乎没有这方法.有什么想法吗?

android android-support-library android-design-library androiddesignsupport android-textinputlayout

8
推荐指数
1
解决办法
4397
查看次数

获取错误膨胀类android.support.design.widget.NavigationView

我正在关注从设计支持库实现navigationView的教程,我无法摆脱下面的错误.我已经阅读了本网站上发布的其他解决方案,但没有一个能为我工作,请帮忙.

Caused by: android.view.InflateException: Binary XML file line #28: Error inflating class android.support.design.widget.NavigationView
Run Code Online (Sandbox Code Playgroud)

activity_main.xml中

<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <include
        android:id="@+id/tool_bar"
        layout="@layout/tool_bar" />

    <FrameLayout
        android:id="@+id/frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </FrameLayout>

</LinearLayout>

<android.support.design.widget.NavigationView
    android:id="@+id/navigation_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/header"
    app:menu="@menu/drawer" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

MainActiviy.java

import android.support.design.widget.NavigationView;
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.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

//Defining Variables
private Toolbar toolbar;
private NavigationView …
Run Code Online (Sandbox Code Playgroud)

java android material-design navigationview androiddesignsupport

8
推荐指数
2
解决办法
1万
查看次数

使用支持库中的BottomSheet时如何调暗背景?

背景如何变暗,就像它在这里显示的一样?

我通常使用CoordinatorLayout和设置它BottomSheetBehavior.

android androiddesignsupport android-coordinatorlayout bottom-sheet

8
推荐指数
1
解决办法
4060
查看次数