2013-12-24 1 views
0

Мне нужно создать действие, которое имеет макет, как показано на прилагаемом изображении The image describes the layout which is required.. У меня возникают проблемы с приближением к нему, как показано на изображении. В предыдущем действии пользователь вводит адрес his.her и сохраняет его. При сохранении должна быть создана новая строка, содержащая TextView и ImageButton. TextView показывает имя человека, а ImageButton можно использовать для удаления этого человека. Каждый раз, когда вводится и сохраняется адрес нового человека, должна быть создана новая строка, поэтому кнопка добавления продолжает перемещаться вниз, чтобы создать строку. Я добавил скриншот о том, как выглядит макет в настоящее время. Current Layout's screenshot Я новичок в программировании приложений для Android и нуждаюсь в некоторой помощи. Пожалуйста, помогите мне.Проектирование TableLayout, которое должно быть добавлено динамически в RelativeLayout

Вот часть моего кода:

if (requestCode == REC_INFO && resultCode == RESULT_OK && data != null) { 
     RecipientArray = (ArrayList<Person>) data.getSerializableExtra("RecArray"); 

     TableLayout tbl = new TableLayout(this); 
     TextView[] tv = new TextView[RecipientArray.size()]; 
     ImageButton delete_btns[] = new ImageButton[RecipientArray.size()]; 
     TableRow tr[] = new TableRow[RecipientArray.size()]; 
     for (int i = 0; i < RecipientArray.size(); i++) { 

      tv[i] = new TextView(this); 
      tv[i].setBackgroundResource(R.drawable.fill_rece); 
      Person p = RecipientArray.get(i); 
      tv[i].setText(p.getName()); 
      tv[i].setTextColor(Color.WHITE); 
      tv[i].setGravity(Gravity.CENTER); 
          delete_btns[i] = new ImageButton(this); 
            delete_btns[i].setImageResource(R.drawable.ipad_postcare_landscape_from); 
          d.setBounds(0, 0, delete_btns[i].getWidth(), delete_btns[i].getHeight());    
      tr[i] = new TableRow(this); 
      tr[i].addView(tv[i]); 
      tr[i].addView(delete_btns[i]); 
      tbl.addView(tr[i]); 

     } 
     recs_layout.addView(tbl);//Adding TableLayout to parent RelativeLayout 

    } 

Вот файл макета XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<ImageView 
    android:id="@id/top_bar_view" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:background="@drawable/top_bar" 
    android:contentDescription="@string/content" /> 

<TextView 
    android:id="@+id/txt_recipients" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="8dp" 
    android:padding="8dp" 
    android:text="@string/text_recipients" 
    android:textColor="#FFFFFF" 
    android:textSize="16sp" /> 

<ImageButton 
    android:id="@id/btn_back" 
    android:layout_width="80dp" 
    android:layout_height="50dp" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:contentDescription="@string/content" 
    android:paddingTop="6dp" 
    android:src="@drawable/ic_back" /> 

<RelativeLayout 
    android:id="@+id/Rlayout_recipients" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@id/top_bar_view" 
    android:background="@drawable/bg" > 

    <ImageButton 
     android:id="@+id/btn_rec_add" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="96dp" 
     android:contentDescription="@string/content" 
     android:src="@drawable/icon_add" /> 
</RelativeLayout> 

+1

Пожалуйста используются пользовательские ListView вместо Tableview ... – Harshid

+0

@Harshid ListView лучше, чем при использовании TableLayout? – user2688158

+0

@Harshid Не могли бы вы помочь мне с примером, похожим или близким к этому? – user2688158

ответ

0

Я думаю, что ваш textview принимает все пространство в строке таблицы попробовать параметры настройки для этого также

Для примера:

tv[i].setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 3f)); 

И точно так же для кнопки изображения

delete_btns[i].setLayoutParams(new TableRow.LayoutParams(
        0, LayoutParams.WRAP_CONTENT,1f)); 

А строки таблицы

tr[i].setWeightSum(4f) 

Здесь третий аргумент float типа вес зрения, так как он установлен в 1f как для вашего изображение и текстовое изображение будут занимать равное пространство, вы можете изменить его и установить, что вам нужно.

При использовании веса установить ширину 0dp как для TextView и ImageView

EDIT

LayoutParams lp=new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT); 
lp.weight=3f; 
tv[i].setLayoutParams(lp); 
+0

По какой-то причине TableLayout.LayoutParams делает TextView и ImageButton невидимыми. Кроме того, когда я ставил ноль в качестве ширины, он делает его невидимым, я должен сделать его LayoutParams.MATCH_PARENT/WRAP_CONTENT, чтобы сделать его видимым – user2688158

+0

вместо tablelayout.layoutparams попробовать TableRow.layoutparams. это будет работать –

+0

попробуйте отредактировать ans –