在设置活动中添加FAB(浮动操作按钮)

时间:2019-06-26 21:25:42

标签: android kotlin

我想在首选项屏幕中添加一个FAB(浮动操作按钮)(目的是显示一个允许解锁锁定的首选项类别的对话框)。

我尝试了不同的方法,但是没有人工作...

我应将FAB放在哪个xml文件中? layout / settings_activity.xml或xml / root_preferences.xml吗?

我可以在kotlin中设置onClickListener吗?

编辑: 我当前的xml:

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
        android:layout_height="match_parent" android:orientation="vertical">
    <FrameLayout
        android:id="@+id/settings"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <com.google.android.material.floatingactionbutton.FloatingActionButton
                android:id="@+id/fabUnlockParams"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:clickable="true"
                app:srcCompat="@android:drawable/ic_lock_idle_lock"
                android:layout_gravity="bottom|right|end"
                android:layout_margin="16dp" android:onClick="changeAccessParamsMed"/>
    </FrameLayout>
</LinearLayout>

和我的SettingsActivity.kt:

class SettingsActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.settings_activity)
        supportFragmentManager
            .beginTransaction()
            .replace(R.id.settings, SettingsFragment())
            .commit()
        supportActionBar?.setDisplayHomeAsUpEnabled(true)
    }

    class SettingsFragment : PreferenceFragmentCompat() {
        override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
            setPreferencesFromResource(R.xml.root_preferences, rootKey)

            val fabUnlockParams = findViewById<View>(R.id.fabUnlockParams)
            fabUnlockParams.setOnClickListener { view ->
                changeAccessParamsMed(false)
            }
        }

        public fun changeAccessParamsMed(enabled: Boolean) {...}
   }
}

如果我将fabUnlockParams.setOnClickListener部分保留在SettingsFragment onCreatePreferences中,则无法访问findViewById。 如果将其移入SettingsActivity onCreate类中,则可以使用findViewById,但无法访问我的changeAccessParamsMed函数...

感谢您的帮助

MT

0 个答案:

没有答案