2

我目前正试图从 collapsingtoolbarlayout 作为 textview 获取标题。我想在以前的活动中的 recyclerview 中的项目之间进行共享元素转换。recyclerview 中项目的标题应翻译为我的 collapsingtoolbarlayout 标题。

在活动 A 中,我有一个具有该列表布局的 recyclerview:

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/row_container"
    android:layout_height="220dp"
    android:layout_width="match_parent"
    android:layout_margin="5dp"
    card_view:cardBackgroundColor="#282828"
    card_view:cardCornerRadius="3dp"
    android:foreground="?attr/selectableItemBackground"
    android:elevation="3dp"
    >
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_vertical"
        >
        <ImageView
            android:id="@+id/cover"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:elevation="2dp"
            />
        <ProgressBar
            android:id="@+id/progress"
            style="?android:attr/progressBarStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:visibility="invisible"/>
    </RelativeLayout>
    <LinearLayout
        android:id="@+id/item_top"
        android:layout_gravity="top"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:elevation="3dp"
        android:padding="5dp"
        >
        <TextView
            android:id="@+id/title"
            android:textColor="#d3d3d3"
            android:textStyle="bold"
            android:maxLines="1"
            android:gravity="left|top"
            android:textSize="15sp"
            android:elevation="3dp"
            android:ellipsize="end"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
        <TextView
            android:id="@+id/text"
            android:textColor="#d3d3d3"
            android:elevation="3dp"
            android:gravity="left|top"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />
    </LinearLayout>
</android.support.v7.widget.CardView>

@id/title 应该动画到这个活动 B 的 collapsingtoolbarlayout 标题:

<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:id="@+id/rootlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
>

<android.support.design.widget.AppBarLayout
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    >
    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        app:expandedTitleMarginStart="28dp"
        app:expandedTitleMarginEnd="20dp"
        app:contentScrim="?attr/colorPrimary"
        >

        <ImageView
            android:id="@+id/toolbar_image"
            android:visibility="invisible"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            android:transitionName="toolbar_image"
            app:layout_collapseMode="parallax"
            />

        <android.support.v7.widget.Toolbar
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin"
            app:elevation="0dp"
            />
    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

<android.support.v4.widget.NestedScrollView
    android:id="@+id/scrollView"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#252525"
    >
    ...
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

有什么建议么?

4

3 回答 3

0

就我查看折叠工具栏代码而言,它只是工具栏的包装器,以及setTitle()它具有的功能,它只设置 acollapsingtexthelper实现 a charsequence,并使用它在布局中的视图中显示。

textview就我在代码中看到的而言,没有。

于 2016-06-16T09:22:02.820 回答
0

如果您的项目是:

<RelativeLayout>
    <TextView
        ...
        android:transitionName="@string/transition_name"/>
</RelativeLayout>

和详细活动:

<CoordinatorLayout>
     <AppBarLayout>
        <CollapsingToolbarLayout
            ...
            android:minHeight="100dp"
            app:contentScrim="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">

            <Toolbar
            android:title=""
            android:gravity="top"
            android:minHeight="?attr/actionBarSize"
            app:layout_collapseMode="pin"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

                <TextView
                    ...
                    android:transitionName="@string/transition_name"/>

            </Toolbar>
        </CollpasingToolbarLayout>
    </AppBarLayout>

    <RecyclerView
        ...
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />


</CoordinatorLayout>

这里要注意的是 transitionName 元素,它是 Activity 的 TextView 中的公共属性,并且两个名称应该相同。这就是 XML 工作的全部内容。

在 Java 中,

Intent i = new Intent(MainActivity.this, DetailsActivity.class);

View sharedView = textview;
String transitionName = getString(R.string.transition_name);

ActivityOptions transitionActivityOptions = ActivityOptions.makeSceneTransitionAnimation(MainActivity.this, sharedView, transitionName);
startActivity(i, transitionActivityOptions.toBundle());

请在此处详细参考最佳文档:

https://github.com/lgvalle/Material-Animations

于 2016-01-08T11:08:51.417 回答
0
  1. 从 Android 开发者页面或任何在线教程中阅读意图。

  2. 在上一个活动中单击 RecyclerView 项,为新活动创建一个意图。

  3. 用于.putExtra()通过意图将项目名称作为字符串传输

  4. 在新的活动onCreate()方法中,使用:

    .getStringExtra()

    字符串标题 = intent.getStringExtra("title_name");

    tv = (TextView)findViewById(R.id.textview);
    tv.setText(标题);

这是一个通用代码。相应地修改。

我希望这是你所需要的。

于 2016-01-02T08:34:52.553 回答