如何将OnClickListener设置为CollapsingToolbarLayout标题
我有一个协调的布局如何将OnClickListener设置为CollapsingToolbarLayout标题
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="@dimen/activity_horizontal_margin"
app:expandedTitleMarginEnd="@dimen/activity_horizontal_margin"
app:expandedTitleGravity="start|bottom"
app:collapsedTitleTextAppearance="@style/TextAppearance.Widget.AppCompat.Toolbar.Title"
app:expandedTitleTextAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FAFAFA"
android:fitsSystemWindows="true"
android:orientation="vertical"
app:layout_collapseMode="parallax">
<com.petronas.laniakea.view.FixedRatioImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:src="@drawable/logo_blue" />
</LinearLayout>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
如何设置一个OnClickListener为标题的TextView里面默认AppBar布局?我能得到的工具栏标题私人TextView的,把它公开,并设置一个OnClickListener这种看法:以上
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Field titleField = null;
try {
titleField =Toolbar.class.getDeclaredField("mTitleTextView");
titleField.setAccessible(true);
TextView barTitleView = (TextView) titleField.get(toolbar);
barTitleView.setOnClickListener(v -> {});
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
代码工作正常,但我还是当我点击标题没有得到一个点击事件。有任何想法吗? 这是我的观点的层次结构,它出现在Stetho: View Hierarchy
您可以通过Toolbar
包裹TextView
尝试。所以,你的布局结构是这样:
<Toolbar ...>
<TextView android:id="@+id/toolbarTextId" ..../>
</Toolbar>
现在,使用OnClickListener
为龙头的文本。
yourTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// some action
}
});
我尝试过,但它显示为工具栏上的固定TextView(不显示CollapsingToolbarLayout的展开/折叠动画)。 – MhdAdeebMasoud
据我所知,没有办法在任何类型的ActionBar或工具栏上的TextView上设置OnClickListener。您使用的方式使用反射API,当它们打包在发布应用程序中时,会立即崩溃。
感谢您的提示,我也不喜欢它。这就是我寻找解决方案的原因。 – MhdAdeebMasoud
可能是你可以检查这个https://*.com/a/24838396/900128 –
@MuthukrishnanRajendran我试过这已经返回null,不起作用。 – MhdAdeebMasoud