2

我当前正在尝试从collapsingtoolbarlayout获取标题为textview。我想在之前活动的回收站视图中的项目之间进行共享元素转换。来自recyclerview的项目的标题应该被翻译成我的collapsingtoolbarlayout标题。从Collapsingtoolbarlayout获取文本视图

在活性的我有这个列表布局的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 /标题为动画这个活动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> 

有什么建议?

+0

你知道吗?我一直在寻找解决方案。 – ShahiM

+1

@ShahiM Nope,目前不认为它是可能的。 – Muffin

回答

0
  1. 阅读Android开发者页面或任何在线教程的意图。

  2. 通过点击上一个活动中的RecyclerView项目来创建新活动的意图。

  3. 使用.putExtra()通过意图

  4. 传输项目作为一个字符串的名称在新的活动onCreate()方法,使用方法:

 
    .getStringExtra() 

    String title = intent.getStringExtra("title_name"); 

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

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

我希望这是你所要求的。

+1

这是我如何在活动之间传输数据。但是我想在两个文本视图之间做一个动画。它被称为“共享元素过渡”。 – Muffin

+1

对不起,我没有意识到这一点。学到了一件新事物。谢谢 –

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元件,它在这两个活动的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

+0

,但后来我不能再使用我的collapsingtoolbarlayout了:/我真的想使用它。我不知道我应该如何使用collapsingtoolbarlayout来做到这一点,使用textview,就像collapsingtoolbarlayout中的标题一样。 – Muffin

+0

@Muffin你的意思是说像Whatsapp的朋友的个人资料活动? – Keshav

+0

不是。我想要从活动a,从recyclerview中的项目,到活动b ^^ – Muffin

0

据我调查了折叠式工具的代码,只是一个是它工具栏的包装器和它具有的setTitle()函数,它只设置一个collapsingtexthelper,它实现了一个charsequence,并用它在布局的视图中显示。

就我所见到的代码而言,没有textview