это мой первый вопрос, опубликованный здесь, поэтому, если я что-то пропущу, дайте мне возможность обновить мой вопрос!
Итак, я (относительно) опытный разработчик быстрых приложений с несколькими приложениями в App Store.
В настоящее время я работаю над переносом этих приложений в магазин Google Play, и мне довольно трудно добиться, чтобы что-то происходило почти так же гладко, как в Swift.Я решил перезапустить весь свой первый проект из пустого приложения и задавать вопросы по пути, чтобы просто создать его.
Мое приложение использует одно основное действие для управления 4-5 фрагментами, управляемыми bottomBar.элемент навигации.Я хочу ограничить пространство просмотра фрагментов так, чтобы оно было:
frag_view_top = titlebar_bottom
фрагмент_view_bottom = bottomBar_navigation_top
таким образом, ничто никогда не будет скрыто за верхом и низом.
Я пробовал несколько различных вариантов ограничения макета, и ничего не работает правильно.Даже до того, как добавить пустой фрагмент нижней панели навигации внутри фрагмента, чтобы я мог ограничиться этим, и это все равно не сработало!
Любая помощь будет принята с благодарностью, спасибо!
фрагмент.xml код:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/fragment_home">
<android.support.v7.widget.AppCompatImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/newsImage"
app:layout_constraintBottom_toTopOf="@id/navigation"/>
</android.support.constraint.ConstraintLayout>
и вот мой код main_activity.xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:background="@color/colorAccent"
android:id="@+id/container">
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="0dp"
android:layout_marginStart="0dp"
android:layout_gravity="bottom"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/navigation" />
</FrameLayout>
РЕДАКТИРОВАТЬ 09.20.2018:
этокак я реализую переключение между своими фрагментами в своей основной деятельности
MainActivity.kt code:
class HomeActivity : AppCompatActivity(){
lateinit var toolbar: ActionBar
private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.navigation_home -> {
toolbar.title = "Home"
val homeFragment = HomeFragment.newInstance()
openFragment(homeFragment)
return@OnNavigationItemSelectedListener true
}
R.id.navigation_map -> {
toolbar.title = "Map"
val localFragment = LocalFragment.newInstance()
openFragment(localFragment)
return@OnNavigationItemSelectedListener true
}
}
false
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
toolbar = supportActionBar!!
val bottomNavigation: BottomNavigationView = findViewById(R.id.navigation)
bottomNavigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
bottomNavigation.selectedItemId = R.id.navigation_home
private fun openFragment(fragment: Fragment) {
val transaction = supportFragmentManager.beginTransaction()
transaction.replace(R.id.container, fragment)
transaction.addToBackStack(null)
transaction.commit()
}
}