Android: Too much margin top in SettingsActivity custom action bar

Viewed 33

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)

SettingsActivity

0 Answers
Related