Я пытаюсь решить проблему, которая останавливает мою разработку.
Я хочу расположить изображение так, чтобы оно находилось в центре макета кадра, с помощью кода.
Я пробовал различные решения, но, похоже, не смог достичь своей цели.
Код
package com.example.testmovingobject
import android.content.Context
import android.os.Bundle
import android.util.DisplayMetrics
import android.widget.ImageView
import android.widget.TextView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
private lateinit var star: ImageView
lateinit var directionText: TextView
lateinit var background: ImageView
lateinit var outMetrics : DisplayMetrics
lateinit var context: Context
private val testDirections = arrayOf(
"North",
"South",
"East",
"West",
"North",
"South",
"East",
"West"
)
private var topBorderHeight = 50f
private var startX : Float = 0f
private var startY : Float = 0f
private var height = 13f
private var width = 7f
private var left = 0f
private var top = 0f
private var screenHeight = 0f
private var screenWidth = 0f
private var backgroundPos = IntArray(2)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
context = getApplicationContext()
setContentView(R.layout.main)
Start()
}
private fun Start()
{
outMetrics = context.resources.displayMetrics
screenHeight = outMetrics.heightPixels.toFloat()
println("Start.metrics height="+screenHeight)
screenWidth = outMetrics.widthPixels.toFloat()
println("Start.metrics width="+screenWidth)
background = findViewById(R.id.background)
println("Start.background size="+background.getWidth()+" "+background.getHeight())
star = findViewById(R.id.star)
star.setBackgroundResource(R.drawable.star)
println("Start.star parent="+star.parent)
println("Start.star pos b4 x="+star.x+" star pos y="+star.y )
background.getLocationOnScreen(backgroundPos)
println("Start.background pos x="+backgroundPos[0]+" pos y="+backgroundPos[1])
directionText = findViewById(R.id.messages)
height = background.getHeight().toFloat()
println("Start.background height="+height)
width = background.getWidth().toFloat()
println("Start.background width="+width)
left = backgroundPos[0].toFloat()
top = backgroundPos[1].toFloat()
println("Start.background bounds left="+left+" top="+top+" width="+width+" height="+height)
println("Start.star pos b4 x="+star.x+" star pos y="+star.y )
startX = width / 2
startY = height / 2
star.x = startX
star.y = startY
println("Start.star pos aftr x="+star.x+" star pos y="+star.y )
println("Start.bounds left="+left+" top="+top+" width="+width+" height="+height)
}
}
XML
Снимок экрана при запуске
На этом изображении показан вид некоторых XML-файлов и эмулятора устройства, и видно, что объект-звездочка не расположен в центре.
Вывод Logcat из printlns
-------------- PROCESS STARTED (5791) for package com.example.testmovingobject ----------------------------
2026-02-19 06:56:45.282 Start.metrics height=2028.0
2026-02-19 06:56:45.283 Start.metrics width=1080.0
2026-02-19 06:56:45.283 Start.background size=0 0
2026-02-19 06:56:45.283 Start.star parent=android.widget.FrameLayout{7f6878b V.E...... ......I. 0,0-0,0 #7f0800c8 app:id/frame}
2026-02-19 06:56:45.283 Start.star pos b4 x=0.0 star pos y=0.0
2026-02-19 06:56:45.283 Start.background pos x=0 pos y=0
2026-02-19 06:56:45.283 Start.background height=0.0
2026-02-19 06:56:45.283 Start.background width=0.0
2026-02-19 06:56:45.283 Start.background bounds left=0.0 top=0.0 width=0.0 height=0.0
2026-02-19 06:56:45.283 Start.star pos b4 x=0.0 star pos y=0.0
2026-02-19 06:56:45.283 Start.star pos aftr x=0.0 star pos y=0.0
2026-02-19 06:56:45.283 Start.bounds left=0.0 top=0.0 width=0.0 height=0.0
---------------- PROCESS ENDED (5791) for package com.example.testmovingobject ----------------------------
Подробнее здесь: https://stackoverflow.com/questions/798 ... using-code
Android Studio Как расположить представление в центре кадра с помощью кода ⇐ Android
Форум для тех, кто программирует под Android
1771485346
Anonymous
Я пытаюсь решить проблему, которая останавливает мою разработку.
Я хочу расположить изображение так, чтобы оно находилось в центре макета кадра, с помощью кода.
Я пробовал различные решения, но, похоже, не смог достичь своей цели.
Код
package com.example.testmovingobject
import android.content.Context
import android.os.Bundle
import android.util.DisplayMetrics
import android.widget.ImageView
import android.widget.TextView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
private lateinit var star: ImageView
lateinit var directionText: TextView
lateinit var background: ImageView
lateinit var outMetrics : DisplayMetrics
lateinit var context: Context
private val testDirections = arrayOf(
"North",
"South",
"East",
"West",
"North",
"South",
"East",
"West"
)
private var topBorderHeight = 50f
private var startX : Float = 0f
private var startY : Float = 0f
private var height = 13f
private var width = 7f
private var left = 0f
private var top = 0f
private var screenHeight = 0f
private var screenWidth = 0f
private var backgroundPos = IntArray(2)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
context = getApplicationContext()
setContentView(R.layout.main)
Start()
}
private fun Start()
{
outMetrics = context.resources.displayMetrics
screenHeight = outMetrics.heightPixels.toFloat()
println("Start.metrics height="+screenHeight)
screenWidth = outMetrics.widthPixels.toFloat()
println("Start.metrics width="+screenWidth)
background = findViewById(R.id.background)
println("Start.background size="+background.getWidth()+" "+background.getHeight())
star = findViewById(R.id.star)
star.setBackgroundResource(R.drawable.star)
println("Start.star parent="+star.parent)
println("Start.star pos b4 x="+star.x+" star pos y="+star.y )
background.getLocationOnScreen(backgroundPos)
println("Start.background pos x="+backgroundPos[0]+" pos y="+backgroundPos[1])
directionText = findViewById(R.id.messages)
height = background.getHeight().toFloat()
println("Start.background height="+height)
width = background.getWidth().toFloat()
println("Start.background width="+width)
left = backgroundPos[0].toFloat()
top = backgroundPos[1].toFloat()
println("Start.background bounds left="+left+" top="+top+" width="+width+" height="+height)
println("Start.star pos b4 x="+star.x+" star pos y="+star.y )
startX = width / 2
startY = height / 2
star.x = startX
star.y = startY
println("Start.star pos aftr x="+star.x+" star pos y="+star.y )
println("Start.bounds left="+left+" top="+top+" width="+width+" height="+height)
}
}
XML
Снимок экрана при запуске
На этом изображении показан вид некоторых XML-файлов и эмулятора устройства, и видно, что объект-звездочка не расположен в центре.
Вывод Logcat из printlns
-------------- PROCESS STARTED (5791) for package com.example.testmovingobject ----------------------------
2026-02-19 06:56:45.282 Start.metrics height=2028.0
2026-02-19 06:56:45.283 Start.metrics width=1080.0
2026-02-19 06:56:45.283 Start.background size=0 0
2026-02-19 06:56:45.283 Start.star parent=android.widget.FrameLayout{7f6878b V.E...... ......I. 0,0-0,0 #7f0800c8 app:id/frame}
2026-02-19 06:56:45.283 Start.star pos b4 x=0.0 star pos y=0.0
2026-02-19 06:56:45.283 Start.background pos x=0 pos y=0
2026-02-19 06:56:45.283 Start.background height=0.0
2026-02-19 06:56:45.283 Start.background width=0.0
2026-02-19 06:56:45.283 Start.background bounds left=0.0 top=0.0 width=0.0 height=0.0
2026-02-19 06:56:45.283 Start.star pos b4 x=0.0 star pos y=0.0
2026-02-19 06:56:45.283 Start.star pos aftr x=0.0 star pos y=0.0
2026-02-19 06:56:45.283 Start.bounds left=0.0 top=0.0 width=0.0 height=0.0
---------------- PROCESS ENDED (5791) for package com.example.testmovingobject ----------------------------
Подробнее здесь: [url]https://stackoverflow.com/questions/79892012/android-studio-how-can-i-position-a-view-in-the-center-of-a-frame-using-code[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия