Как настроить динамический программный макет - Android - PullRequest
1 голос
/ 01 декабря 2010

Я имею дело с некоторым примером кода, который я использую для создания приложения, которое получает Surveys с сервера. Визуализация макета выполняется в Java, а не в XML, и у меня проблема с тем, чтобы надписи и поля для редактирования текста (соответственно для вопросов и ответов) прижимались друг к другу в одной строке, а не сидели друг над другом в отдельной строке. линии, как это по умолчанию с рендерингом в XML.

Я хочу разместить надписи над полями для редактирования текста, чтобы они оба могли растягиваться по экрану и были лучше видны.

код для общего макета это здесь:

    private boolean DisplayForm()
{

    try
    {
        ScrollView sv = new ScrollView(this);
        //need TableLayout Here!
        final LinearLayout ll = new LinearLayout(this);
        sv.addView(ll);
        ll.setOrientation(android.widget.LinearLayout.VERTICAL);
        ll.setBackgroundResource(R.color.background);


        int i;
        for (i=0;i<theForm.fields.size();i++) {
            if (theForm.fields.elementAt(i).getType().equals("text")) {
                theForm.fields.elementAt(i).obj = new EditSurvey(this,(theForm.fields.elementAt(i).isRequired() ? "*" : "") + theForm.fields.elementAt(i).getLabel(),"");
                ll.addView((View) theForm.fields.elementAt(i).obj);
            }
            if (theForm.fields.elementAt(i).getType().equals("numeric")) {
                theForm.fields.elementAt(i).obj = new EditSurvey(this,(theForm.fields.elementAt(i).isRequired() ? "*" : "") + theForm.fields.elementAt(i).getLabel(),"");
                ((EditSurvey)theForm.fields.elementAt(i).obj).makeNumeric();
                ll.addView((View) theForm.fields.elementAt(i).obj);
            }
            if (theForm.fields.elementAt(i).getType().equals("choice")) {
                theForm.fields.elementAt(i).obj = new SurveySpinners(this,(theForm.fields.elementAt(i).isRequired() ? "*" : "") + theForm.fields.elementAt(i).getLabel(),theForm.fields.elementAt(i).getOptions());
                ll.addView((View) theForm.fields.elementAt(i).obj);
            }
        }

код для ввода меток и полей для редактирования текста здесь:

public class EditSurvey extends LinearLayout {
TextView label;
EditText txtBox;

public EditSurvey(Context context,String labelText,String initialText) {
    super(context);
    label = new TextView(context);
    label.setText(labelText);
    label.setTextColor(0xFF000000);
    //label.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT));
    txtBox = new EditText(context);
    txtBox.setText(initialText);
    //txtBox.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT));
    this.addView(label);
    this.addView(txtBox);
}

Я пропустил другой фрагмент кода, который вытягивает ярлыки с помощью блесен, что в значительной степени совпадает.

Это не мой код, просто чтобы прояснить (это код Фрэнка Абельсона), но я пытаюсь использовать его в своих целях.

любая помощь будет фантастической.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...