我将Android Studio与Kotlin一起使用,并且我的工具栏存在问题,当我创建它时,它会在我的活动中隐藏其他元素=>
没有工具栏
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main))
val user = User("Bob", 20)
findViewById<Button>(R.id.go_to_second).setOnClickListener {
println("Lancement de la seconde activité")
val intent = Intent(this, Second::class.java)
intent.putExtra("user", user)
startActivity(intent)
}
findViewById<Button>(R.id.bouton_dialogue).setOnClickListener {
val confdial = ConfirmDialog()
confdial.listener = object: ConfirmDialog.ConfDeleteListener {
override fun onPositiveClick() {
Log.i("MainActivity", "Recuperation du postive suppression dialog")
val dd = FileListDialog()
dd.show(supportFragmentManager, "onPositiveClick")
}
override fun onNegativeClick() {
Log.i("MainActivity", "Confirmation du negative suppression dialog")
}
}
confdial.show(supportFragmentManager, "confirmDelete")
}
}
}
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:visibility="visible"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/go_to_second"
android:visibility="visible"
android:layout_gravity="center"
android:text="go pr l'aventure" />
<Button
android:id="@+id/bouton_dialogue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="visible"
android:text="lancement dialogue" />
结果=>
使用工具栏
MainActivity.kt
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v7.widget.Toolbar
import android.util.Log
import android.view.Menu
import android.view.MenuItem
import android.widget.Button
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val toolbar = findViewById<Toolbar>(R.id.toolbar)
setSupportActionBar(toolbar)
val user = User("Bob", 20)
findViewById<Button>(R.id.go_to_second).setOnClickListener {
println("Lancement de la seconde activité")
val intent = Intent(this, Second::class.java)
intent.putExtra("user", user)
startActivity(intent)
}
findViewById<Button>(R.id.bouton_dialogue).setOnClickListener {
val confdial = ConfirmDialog()
confdial.listener = object: ConfirmDialog.ConfDeleteListener {
override fun onPositiveClick() {
Log.i("MainActivity", "Recuperation du postive suppression dialog")
val dd = FileListDialog()
dd.show(supportFragmentManager, "onPositiveClick")
}
override fun onNegativeClick() {
Log.i("MainActivity", "Confirmation du negative suppression dialog")
}
}
confdial.show(supportFragmentManager, "confirmDelete")
}
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.main_menu, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem?): Boolean {
when(item?.itemId){
R.id.action_second -> {
val intent = Intent(this, Menu_activiy::class.java)
startActivity(intent)
return true
}
R.id.action_delete -> {
Toast.makeText(this, "supprimer", Toast.LENGTH_LONG).show()
return true
}
else -> return super.onOptionsItemSelected(item)
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
android:background="@color/colorPrimary"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:visibility="visible"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/go_to_second"
android:visibility="visible"
android:layout_gravity="center"
android:text="go pr l'aventure" />
<Button
android:id="@+id/bouton_dialogue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="visible"
android:text="lancement dialogue" />
</LinearLayout>
main_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/action_second"
android:icon="@mipmap/ic_launcher_round"
android:title="Seconde"
app:showAsAction="always"/>
<item android:id="@+id/action_save"
android:icon="@drawable/epee"
android:title="Enregistrer"
app:showAsAction="always"/>
<item android:id="@+id/action_delete"
android:icon="@drawable/pioche"
android:title="Supprimer"
app:showAsAction="ifRoom"/>
<item android:id="@+id/action_help"
android:icon="@drawable/pomme"
android:title="Aide"
app:showAsAction="never"/>
</menu>
使用工具栏的结果=>
所以我们可以看到ToolBar,但是“ Hello World” TextView之类的其他元素已经消失了
答案 0 :(得分:0)
设置LinearLayout的方向:
android:orientation="horizontal"
或android:orientation="vertical"
也会删除所有引用ConstraintLayout
的属性。
答案 1 :(得分:0)
您的工具栏的宽度为match_parent。这意味着工具栏宽度与父视图相同。您的其他视图仍然存在,但是它们不可见,因为LinearLayout的方向是水平的。它们不在父视图(LinearLayout)中。
您必须将父布局的方向更改为垂直或更改父视图的类型。
答案 2 :(得分:0)
我想问题与上面的答案中所述相同。
当未指定LinearLayout的方向时,它将使用默认值,即水平方向。布局应该是列还是行?在行中使用“水平”,在列中使用“垂直”。默认值为水平。
由于您没有给出任何方向,因此它是水平的并且将其他视图推到范围之外,因此最好在线性布局中给出方向。
android:orientation="vertical"
答案 3 :(得分:0)
您可以通过以下方式为您的Hello World TextView设置边距 android:layout_marginTop =“?attr / actionBarSize”