Оценете темата:
  • 0 гласа - средно 0
  • 1
  • 2
  • 3
  • 4
  • 5

Как да направя динамично добавяне на елементи в android?
#1

Може ли някой да ми обясни как да направя динамично добавяне на елементи в съществуващ layout.В смисъл като натисна един бутон да ми се добави автоматично някаква картинка,текст или бутон.Като натисна за втори път бутона възможно ли е да се зададе margin от старата картинка или текст?

P.S - искам да използвам релативен лейоут. Smile Smile
Цитирай
Аксесоари
#2

Пробва ли с резултатите от гугъл по въпроса ти:
http://stackoverflow.com/questions/62165...-into-view
http://www.mysamplecode.com/2011/10/andr...l-add.html
http://android-er.blogspot.bg/2013/05/ad...cally.html
Цитирай
#3
Wink 

Пробвал съм да добавям елементи в LinearLayout. Всеки нов елемент отива под другия само защото линейния layout не допуска два елемента на един ред.Опитвам се да направя същото обаче в RelativeLayout с определени margin-и спрямо компонентите!  Smile
Цитирай
#4

(2016-02-11, 11:39:34)speeddemon написа:  ... само защото линейния layout не допуска два елемента на един ред....

a що не пробваш на LinearLayout-а да му сложиш android:orientation="horizontal" ?
Цитирай
#5

Твърдението че при LinearLayout не се допуска да има два елемента на един ред не е правилно. При него има две ориентации horizontal & vertical, при хоризонтал може да си добавяш елементи на един и същи ред.

При RelativeLayout трябва да си наясно за думата Relative и как се позиционират елементите, когато се използва този вид layout. Като искаш да слагаш един под друг елементите просто трябва указваш под кой елемент го слагаш. Отваряш xml и виждаш какво ползва за позициониране layout_below="@+id/idPrevElement" http://developer.android.com/reference/a...ayout.html
Цитирай
#6

ако искаш да сложиш елемент релативно на някой мисля, че се използва това
params.addRule(RelativeLayout.ALIGN_BOTTOM, tv.getId()); (това предполагам ще подравни отдолу, текущия елемент с елемент  tv)
a марджина се задава с това
params.setMargins(0, 0, 0, 0); (тук на мястото, на която нула искаш си добавяш колко пиксела да е марджина, в която искаш посока)

п.п. не съм много сигурен за горните неща, може да тестваш. аз лично съм добавял така елементи, но в scrollview с linearlayout Smile

п.п.2 като се замисля повечето неща могат да се направят с linearlayout. ако задачата ти не го изисква специално тоя RelativeLayout по добре измисли как да го направиш с linear. по лесно ще е.
Цитирай
#7

(2016-02-11, 13:43:03)yo_asakura написа:  ако искаш да сложиш елемент релативно на някой мисля, че се използва това
params.addRule(RelativeLayout.ALIGN_BOTTOM, tv.getId()); (това предполагам ще подравни отдолу, текущия елемент с елемент  tv)
a марджина се задава с това
params.setMargins(0, 0, 0, 0); (тук на мястото, на която нула искаш си добавяш колко пиксела да е марджина, в която искаш посока)

п.п. не съм много сигурен за горните неща, може да тестваш. аз лично съм добавял така елементи, но в scrollview с linearlayout Smile

п.п.2 като се замисля повечето неща могат да се направят с linearlayout. ако задачата ти не го изисква специално тоя RelativeLayout по добре измисли как да го направиш с linear. по лесно ще е.

Благодаря за отговора.Дълго мислих по въпроса дали ще мога да направя задачата само с Linearlayout и ми се струва че ще трябва да използвам комбинация от много линейни лейаути. Smile Аз също съм правил с scrollview и linearlayout, но нямам толкова голям избор за разположение на елементите колкото при релативния лейаут.  Smile
Също така за да сетвам марджин (params.setMargins(0, 0, 0, 0); (както си обяснил ти ) трябва да импортна RelativeLayout.LayoutParams  за да се получи (а не LinearLayout.LayoutParams или нещо друго..) Благодаря отново!
Цитирай
#8

Все пак трябва да знаеш, че от гледна точка на оптимизация RelativeLayout изчислява размерите на всяко view по двапъти при onMesure,ако имаш много view-та може да доведе до загуба на frames  и чуството за бавно приложение.Същото важи и ако използваш weight в LinearLayout.
Всичко зависи от задачата, има и други layout-и Smile


Цитирай




Потребители разглеждащи темата: 1 гост(и)