Android - Невозможно переместить прогрессбар в центр - PullRequest
0 голосов
/ 30 мая 2019

Работая с Kotlin, в моем BaseActivity я хочу реализовать showProgressBar, т.е.

abstract class BaseActivity : AppCompatActivity() {

        var progressBar: ProgressBar? = null

        fun showProgressBar() {
            progressBar = ProgressBar(this, null, android.R.attr.progressBarStyleSmall)
            val params = RelativeLayout.LayoutParams(120, 120)
            params.addRule(RelativeLayout.CENTER_IN_PARENT)
            val layout = this.findViewById<ViewGroup>(android.R.id.content)
            layout.addView(progressBar, params)
        }

        fun hideProgressBar() {

           progressBar?.visibility = GONE
        }
}

MainActivity макет

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".activities.MainActivity">

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:layout_centerInParent="true" />

</RelativeLayout>

Я звоню с MainActivity вроде

class MainActivity : BaseActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        Log.i(TAG, "calling showProgressBar")
        showProgressBar()

        Handler(Looper.getMainLooper()).postDelayed(Runnable {

            Log.i(TAG, "calling hideProgressBar")
            hideProgressBar()

        }, 5000)
    }
}

Но params.addRule(RelativeLayout.CENTER_IN_PARENT) кажется не работает. Вывод на скриншоте ниже. Как я могу переместить индикатор выполнения в центр экрана?

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...