I use a custom -but very simple- action bar in all my activities that just consists on a title and a back arrow, and I'm not being able to prevent an unwanted extra top margin currently shown (I have to mention that I'm facing this issue only in SettingsActivity.
SettingsActivity:
class SettingsActivity {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)
setActionBar()
...
setActionBar:
private fun setActionBar() {
val actionBar = supportActionBar
if (actionBar != null) {
actionBar.setDisplayShowTitleEnabled(false)
actionBar.setDisplayHomeAsUpEnabled(false)
actionBar.setDisplayUseLogoEnabled(false)
actionBar.setDisplayShowCustomEnabled(true)
val layoutParams = ActionBar.LayoutParams(
ActionBar.LayoutParams.MATCH_PARENT,
ActionBar.LayoutParams.WRAP_CONTENT
)
val view = LayoutInflater.from(this).inflate(R.layout.testme_actionbar, null)
actionBar.setCustomView(view, layoutParams)
val llTitle = findViewById<LinearLayout>(R.id.llTitle)
if (llTitle != null) {
val actionBarColor = Color.parseColor(AppSettings.actionBarStartColor)
llTitle.setBackgroundColor(actionBarColor)
}
val actionBarTitle = findViewById<AutoResizeTextView>(R.id.tvActionBarTitle)
if (actionBarTitle != null) {
val actionBarTitleText = TMLocale.getStringResourceByName("menu_settings")
actionBarTitle.text = actionBarTitleText
actionBarTitle.setTextColor(Color.parseColor(AppSettings.actionBarTitleColor))
}
}
}
Manifest:
<activity
android:name=".ui.activities.settings.SettingsActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@style/SettingsActionBar">
</activity>
styles:
<style name="SettingsActionBar" parent="Theme.AppCompat.Light">
<item name="android:windowNoTitle">false</item>
<item name="android:windowActionBar">false</item>
<item name="android:background">#ffffff</item>
<item name="actionBarStyle">@style/Actionbar</item>
<item name="colorAccent">#3092a8</item>
<item name="preferenceCategoryTitleTextAppearance">@style/AppTextAppearance.Preference.Title</item>
</style>
<style name="AppTextAppearance.Preference.Title" parent="TextAppearance.AppCompat.Title">
</style>
<style name="Actionbar" parent="Widget.AppCompat.ActionBar">
<item name="contentInsetStart">0dp</item>
<item name="contentInsetEnd">0dp</item>
</style>
testme_actionbar:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:id="@+id/llTitle"
android:baselineAligned="false">
<LinearLayout
android:orientation="horizontal"
android:layout_width="0dp"
android:layout_weight="2000"
android:layout_height="match_parent"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:gravity="center_vertical"
tools:ignore="UseCompoundDrawables">
<ImageView
android:contentDescription="@string/pref_category_animations"
android:id="@+id/imgBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="16dp"
android:layout_marginTop="10dp"
android:adjustViewBounds="true"
android:visibility="gone"
android:src="@drawable/lessthan" />
<AutoResizeTextView
android:id="@+id/tvActionBarTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="start"
android:singleLine="true"
android:includeFontPadding="false"
android:textIsSelectable="false"
android:textSize="22sp"
android:textColor="#0D0D0D" />
</LinearLayout>
<LinearLayout
android:id="@+id/llTimer"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="end"
android:visibility="gone"
android:orientation="horizontal">
<ImageView
android:contentDescription="@string/pref_category_animations"
android:id="@+id/imgStopwatch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="3dp"
android:layout_marginTop="10dp"
android:paddingBottom="8dp"
android:adjustViewBounds="true"
android:layout_gravity="bottom"
android:src="@drawable/stopwatch" />
<TextView
android:id="@+id/tvTimer"
android:textColor="#E64370"
android:textSize="18sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:layout_marginEnd="5dp"
android:textIsSelectable="false" />
</LinearLayout>
</LinearLayout>
You'll see in the attached picture below it seems like Android were reserving space for the normal action bar, which I'm clearly disabling using requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)
