ToolBar間距設定
阿新 • • 發佈:2019-01-04
1、沒有NavigationIcon
此時,contentInsetStart 會發揮作用,什麼作用。就是你的自定義View左邊總會多出一塊空白。
為什麼?看原始碼。
int contentInsetStart = a.getDimensionPixelOffset(styleable.Toolbar_contentInsetStart, -2147483648); int contentInsetEnd = a.getDimensionPixelOffset(styleable.Toolbar_contentInsetEnd, -2147483648); int contentInsetLeft = a.getDimensionPixelSize(styleable.Toolbar_contentInsetLeft, 0); int contentInsetRight = a.getDimensionPixelSize(styleable.Toolbar_contentInsetRight, 0); this.ensureContentInsets(); this.mContentInsets.setAbsolute(contentInsetLeft, contentInsetRight); if (contentInsetStart != -2147483648 || contentInsetEnd != -2147483648) { this.mContentInsets.setRelative(contentInsetStart, contentInsetEnd); }
我們能夠看到,當沒有賦值是有一個相對的偏移。並且在style中看toolbar的屬性。
<style name="Base.V7.Widget.AppCompat.Toolbar" parent="android:Widget"> <item name="titleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Title</item> <item name="subtitleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle</item> <item name="android:minHeight">?attr/actionBarSize</item> <item name="titleMargin">4dp</item> <item name="maxButtonHeight">@dimen/abc_action_bar_default_height_material</item> <item name="buttonGravity">top</item> <item name="collapseIcon">?attr/homeAsUpIndicator</item> <item name="collapseContentDescription">@string/abc_toolbar_collapse_description</item> <item name="contentInsetStart">16dp</item>//這裡 <item name="contentInsetStartWithNavigation">@dimen/abc_action_bar_content_inset_with_nav</item> <item name="android:paddingLeft">@dimen/abc_action_bar_default_padding_start_material</item> <item name="android:paddingRight">@dimen/abc_action_bar_default_padding_end_material</item> </style>
預設賦值16dp,坑爹呢。
所以我們可以這樣幹。
- 在xml裡進行賦值
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="match_parent"
app:contentInsetStart="0dp">
- 在style裡複寫
<style name="sss" parent="Widget.AppCompat.Toolbar"> <item name="contentInsetStart">0dp</item> </style>
這兩個都闊以。
2、有navigationIcon
這時候 神奇的事情發生了,我們放入一個左上角的icon
不就是間距麼,處理掉就是,結果上面的方法木用。接下來看原始碼,看到一個
setContentInsetStartWithNavigation(int w)
方法,傳入一個寬度引數
看名字,再想想上面的情況
emmmm這是icon有的時候產生的間距試一下
在java程式碼裡or kt程式碼裡呼叫
toolbar.setContentInsetStartWithNavigation(0)
效果出來了就是這樣。
如果你的icon夠大,當我沒說。