Sobes.tech
Middle

Чӣ гуна бояд интерфейси корбарро дар Android бе истифодаи XML амалӣ кард?

sobes.tech AI

Ҷавоб аз AI

Моҷаро истифода бурда, коди Kotlin/Java барои эҷод ва илова кардани View ва ViewGroup ба таври барномавӣ истифода бурда мешавад.

Масалан, эҷоди TextView:

// Эҷоди TextView дар код
val textView = TextView(context)
// Муайян кардани хосиятҳо
textView.text = "Салом, ҷаҳон!"
textView.textSize = 20f
textView.setTextColor(Color.BLACK)
textView.gravity = Gravity.CENTER

// Илова кардани TextView ба ViewGroup (масалан, LinearLayout)
val linearLayout = LinearLayout(context)
linearLayout.orientation = LinearLayout.VERTICAL
linearLayout.addView(textView)

// Муайян кардани layout асосӣ
setContentView(linearLayout)

Барои интерфейсҳои мураккабтар, истифода бурда мешавад, ки layout-ро "барномавӣ" эҷод мекунанд, бо ҳамҷоя кардани ViewGroup ва View-ҳои гуногун.

Арзишҳо:

  • Эҷоди UI-ро ба таври динамикӣ бар асоси маълумот ё логика.
  • Назорати дақиқтар дар сохтани компонентҳо.
  • Теоретикӣ метавонад каме тезтар бошад, зеро XML-ро парсинг намекунад.

Норасоиҳо:

  • Код камтар хондашаванда ва барои layout-ҳои мураккаб бештар калон мешавад.
  • Таҳлил кардани layout пеш аз оғози барнома душвор аст.
  • Воситаҳои пешнамоиш, монанди XML, вуҷуд надоранд.

Дар равишҳои муосир, масалан, Jetpack Compose (ки бо Kotlin кор мекунад), сохтани UI комилан декларативӣ дар код аст, ки XML-ро иваз мекунад.

Масалан дар Jetpack Compose:

// Дар функсияи @Composable UI-ро муайян мекунем
@Composable
fun Greeting(name: String) {
    Text(text = "Салом, $name!")
}

// Ин функсияро дар Activity истифода мебарем
class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Greeting("Дунё")
        }
    }
}