【发布时间】:2015-09-26 11:19:08
【问题描述】:
我正在尝试在工具栏标题中添加带有“makeSceneTransitionAnimation”的动画,但由于它是私有的,我无法在其上设置“transitionName”。
如果有人知道如何解决这个问题或知道其他方式帮助我。
【问题讨论】:
标签: android android-animation material-design
我正在尝试在工具栏标题中添加带有“makeSceneTransitionAnimation”的动画,但由于它是私有的,我无法在其上设置“transitionName”。
如果有人知道如何解决这个问题或知道其他方式帮助我。
【问题讨论】:
标签: android android-animation material-design
因为你使用的是Toolbar所以可以考虑直接创建自定义标题TextView的可能性:
禁用默认的 ActionBar 标题:
@Override
public void onCreate(Bundle savedInstanceState) {
// ...
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Either by calling
getSupportActionBar().setTitle(null);
// Or
toolbar.setTitle(null);
// Or
getSupportActionBar().setDisplayShowTitleEnabled(false);
// ...
}
还有很多其他方法可以从 XML 中禁用默认标题,在这个问题中讨论了一些方法:Remove title in Toolbar in appcompat-v7。
然后在Activity的布局文件中,在Toolbar里面添加一个自定义的标题TextView:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:theme="@style/AppTheme"
app:popupTheme="@style/AppTheme.PopupOverlay">
<TextView
android:id="@+id/custom_title"
android:text="@string/activity_title"
android:textAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
android:transitionName="@string/title_transition_name"/>
</android.support.v7.widget.Toolbar>
textAppearance 可用于应用与默认 ActionBar 标题相同的样式。
这种方法可以让您更好地控制标题视图,特别是如果您需要播放一些额外的TextView 属性Animations 和sceneTransition,并且您希望能够明确定义最终外观的标题。
如果您愿意,可以通过不同的方式找到默认标题 TextView:
@Override
public void onCreate(Bundle savedInstanceState) {
// ...
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// This assumes that the title is the first child of Toolbar
TextView titleTextView = (TextView) toolbar.getChildAt(0);
// Or this assumes that the title is the first TextView inside of Toolbar
for(int i = 0; i < toolbar.getChildCount(); ++i) {
View child = toolbar.getChildAt(i);
if(view instanceof TextView) {
titleTextView = (TextView) view;
break;
}
}
}
然后可以设置transitionName:
titleTextView.setTransitionName(/* Transition name */);
更多查找标题 TextView 的方法在此处讨论 Getting ActionBar Title TextView with AppCompat v7 r21。
【讨论】: