Титан: Проблем с припокриването на етикета

За Android

Имам два етикета в ред на таблица. Опитвам се да задам тези два етикета вертикално, но firstLabel припокрива втория. Тъй като височината на firstLabel е „auto“ и съдържа динамичен текст, напр. 10 реда, 20 реда.

Поради динамичната височина от firstLabel не можах да настроя горната част на secondLabel, така че се припокрива.

Опитах всички възможни решения, налични в SO и Appcelerator, но не можах да намеря поправката.

1). Не можах да получа височина от firstLabel след или преди добавянето му към изгледа, реда на таблицата и т.н...

2) Опита се да зададе височина на етикета според дължината на текста, но не можа да го поправи.

Все още се търси решението..

въведете описание на изображението тук


person Maulik    schedule 16.03.2012    source източник


Отговори (2)


Това, което трябва да направите, не е да зададете оформлението на вертикално върху етикета, а по-скоро върху изгледа, който съдържа всички етикети. Ако родителският изглед има вертикално оформление, той ще постави втория етикет веднага след края на първия етикет. Освен това, задаване на свойството "top" на втория етикет ще постави толкова много единици между долната част на label1 и горната част на етикет 2. Помислете за относително позициониране на блоковите елементи в CSS.

person DannyM    schedule 16.03.2012
comment
За да добавите към проблема, който имате с получаването на динамичния изглед, всички устройства имат различни разделителни способности и плътности, така че приложението не знае каква ще бъде височината, докато не се покаже на екрана. Така че можете да получите стойността на височината, след като добавите етикета към прозореца и отворите прозореца. - person DannyM; 16.03.2012
comment
Знаеш ли човече.. Опитвах се да го реша от последните 2 дни! Не знаех нищо за структурата на оформлението на Android... Наистина оценявам помощта ви... Благодаря много, работи... - person Maulik; 17.03.2012
comment
още нещо... каква модификация трябва да задам хоризонтален изглед на изображението, означава лявата страна, където има празно място? - person Maulik; 17.03.2012
comment
Мисля, че с изгледа на изображение изображението се разтяга до размера на изгледа, но не съм 100% сигурен. - person DannyM; 19.03.2012
comment
Всъщност, ако поставя изглед на изображение, първият ми етикет ще бъде поставен след изгледа на изображението. Да кажем, че височината на изгледа на изображението е 50, тогава първият етикет ще започне от 52 автоматично... - person Maulik; 19.03.2012
comment
Това е така само ако редът е вертикално разположен. - person DannyM; 19.03.2012
comment
Това, което искате да направите тогава, е да настроите реда да се позиционира хоризонтално. Ще бъде същата концепция. Имайте предвид, че можете да поставите изгледи в изгледи, така че може да искате да зададете реда хоризонтален и да имате изглед на изображение, както и нормален изглед (който съдържа етикетите) и да зададете нормалния изглед на вертикален. - person DannyM; 19.03.2012
comment
за бързо решение.. Зададох горната част на първия си етикет на '-50dp', така че той е позициониран точно до изгледа на изображението с '65dp' ляво поле... - person Maulik; 19.03.2012
comment
да, вярно.. но опитах с изглед и добавих моите етикети в изгледа и зададох оформлението вертикално спрямо изгледа и оформлението на реда на хоризонтално... но не можа да работи... вижте това developer.appcelerator.com/question/133951/ - person Maulik; 19.03.2012
comment
Това, което бих направил, е следното: 1) създам tableViewRow с хоризонтална позиция. 2) добавете imageView и view1 към tableviewRow. 3) задайте позиция на view1 на вертикална и наляво на 10 4) добавете етикети към view1 с textAlign, зададен на 'left'. Това ще направи е, че ще създаде изображение, което ще бъде изравнено с лявата страна на tableViewRow. След това ще вземе динамичната ширина на изображението и ще добави ляво поле от 10px към изгледа1. След това ще добави подравнените вляво етикети към view1. - person DannyM; 19.03.2012
comment
здравейте, можете ли да разгледате това stackoverflow.com/questions/9802302/ - person Maulik; 21.03.2012

Решено... Според отговора на DannyM. Също така забелязвам, че добавянето на ред на етикета в реда също има значение.

for (var i = 0; i < results.length; i++)
{
    // Create a row and set its height to auto
    row = Titanium.UI.createTableViewRow
    ({
        height:'auto',
        layout :'vertical'
    });

    var currentObj = results[i];
    // Create the label to hold the place name
    var placeNameLabel = Titanium.UI.createLabel
    ({
        text:currentObj.PlaceName,
        left:'75dp',
        top:'auto',
        width:'auto',
        height:'18dp',              
        textAlign:'left',
        font:{fontSize:'14dp',fontWeight:'bold'},
        wordWrap:true
    });

    var placeAddressLabel = Titanium.UI.createLabel
    ({
        text:currentObj.PlaceAddress,
        left:'75dp',
        top:'auto',
        width:'230dp',
        height:'auto',      
        textAlign:'left',
        font:{fontSize:'14dp'}                  
    });

    var checkInDate = Titanium.UI.createLabel
    ({
        text:currentObj.CheckInDate+' '+currentObj.CheckInTime,
        left:'75dp',
        top:'auto', //placeAddressLabel.height + 30 +'dp',
        width:'165dp',
        height:'25dp',
        textAlign:'left',
        font:{fontSize:'14dp'},
        wordWrap:true,
    });

    row.add(placeNameLabel);
    row.add(placeAddressLabel);
    row.add(checkInDate)

    tableData[i] = row;
 }
 return tableData ;
person Maulik    schedule 17.03.2012