1
如何在Android中將活動的動作欄標題居中?中心動作欄標題
我已經在這個特定主題上看到了很多關於SO的問題。每個答案都回到「使用自定義視圖」並擁有自己的工具欄。
我發現了一個無需創建自定義視圖即可工作的解決方案。
如何在Android中將活動的動作欄標題居中?中心動作欄標題
我已經在這個特定主題上看到了很多關於SO的問題。每個答案都回到「使用自定義視圖」並擁有自己的工具欄。
我發現了一個無需創建自定義視圖即可工作的解決方案。
讓這個方法在你Activity
:
private void centerTitle() {
ArrayList<View> textViews = new ArrayList<>();
getWindow().getDecorView().findViewsWithText(textViews, getTitle(), View.FIND_VIEWS_WITH_TEXT);
if(textViews.size() > 0) {
AppCompatTextView appCompatTextView = null;
if(textViews.size() == 1) {
appCompatTextView = (AppCompatTextView) textViews.get(0);
} else {
for(View v : textViews) {
if(v.getParent() instanceof Toolbar) {
appCompatTextView = (AppCompatTextView) v;
break;
}
}
}
if(appCompatTextView != null) {
ViewGroup.LayoutParams params = appCompatTextView.getLayoutParams();
params.width = ViewGroup.LayoutParams.MATCH_PARENT;
appCompatTextView.setLayoutParams(params);
appCompatTextView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
}
}
}
然後,只是把它在你的onCreate()
:
centerTitle();
這就是它!
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" >
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="haiii"/>
</android.support.v7.widget.Toolbar>
爲什麼不使用XML? –
因爲你必須自己執行菜單,樣式(顏色,主題)。通過這種方式,您的主要顏色和所有其他標準操作欄功能仍然存在 –
我不確定您的意思,但使用AppBarLayout和居中的TextView,您仍然可以獲得所有您提到的東西 –