[英]Get title textview of collapsing toolbar layout
我有一個collapsingToolbarLayout
,我需要對標題TextView
進行一些附加設置。
問題:如何獲得對該TextView的引用?
<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/review_coordinator_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.stack.overflow.reviewmaschine.ReviewMaschineActivity"
tools:ignore="MergeRootFrame">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_height"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<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:layout_scrollFlags="scroll|exitUntilCollapsed"
app:toolbarId="@+id/toolbar">
<android.support.v7.widget.Toolbar
android:id="@+id/detail_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/item_detail_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior = "@string/appbar_scrolling_view_behavior"
/>
<com.mego.smscloud.reviewmaschine.SaveFloatingActionButton
android:id="@+id/review_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:backgroundTint="@color/colorPrimary"
android:layout_margin="@dimen/fab_margin"
android:src="@drawable/ic_floppy_white_48dp"
app:borderWidth="0dp"
app:elevation="@dimen/fab_elevation"
app:rippleColor="#00ffff"/>
</android.support.design.widget.CoordinatorLayout>
編輯:僅將TextView
添加到Toolbar
不會像CollapsingToolbarLayout
標題那樣將其集成到相同的行為中
Toolbar
類根據需要創建其子View
,以便在您在Toolbar
上設置標題之前, TextView
將不存在。 完成之后,有兩個選擇。
你可以遍歷Toolbar
的兒童View
秒-使用ViewGroup#getChildCount()
和getChildAt()
方法-尋找一個TextView
。 如果Toolbar
沒有其他TextView
,則標題將是唯一的標題。 如果還有其他內容,則應對照設置為標題的內容檢查文本。
另一個選擇是使用反射來獲取標題TextView
字段。 例如:
private TextView getTitleTextView(Toolbar toolbar) {
try {
Class<?> toolbarClass = Toolbar.class;
Field titleTextViewField = toolbarClass.getDeclaredField("mTitleTextView");
titleTextViewField.setAccessible(true);
TextView titleTextView = (TextView) titleTextViewField.get(toolbar);
return titleTextView;
}
catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
您當然應該在執行此方法的返回值之前進行空檢查。
這是Toolbar
的默認標題。如果您想更改標題,只需調用:
getSupportActionBar().setTitle(String title);
但這只是改變了文字。
但是,如果您想進行更多修改,請將自己的TextView
附加到Toolbar
。 像那樣:
<android.support.v7.widget.Toolbar
android:id="@+id/detail_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.v7.widget.Toolbar>
然后在您的Activity
找到標題
TextView title = (TextView) findViewById(R.id.title);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.