我想在首选项屏幕中添加一个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