ImageButton не тот же размер - PullRequest
       6

ImageButton не тот же размер

0 голосов
/ 02 ноября 2010

У меня проблема с шириной ImageButtons, она не того же размера. Я экспериментировал со всеми атрибутами в течение двух часов и ничего. Я создаю кнопки во время выполнения и помещаю их в строку (также созданную во время выполнения). Кто-нибудь знает какое-либо решение для этого? alt text

public static TableRow[] Create(List<Apartment> list){
        TableRow[] rows=null;
        try{
            rows=new TableRow[list.size()*3];
            int i=0;

            for(final Apartment ap : list){
                rows[3*i]=new TableRow(activity);
                rows[3*i+1]=new TableRow(activity);
                rows[3*i+2]=new TableRow(activity);

                rows[3*i].setLayoutParams(new LayoutParams( 
                        LayoutParams.WRAP_CONTENT, 
                        LayoutParams.FILL_PARENT));
                rows[3*i+1].setLayoutParams(new LayoutParams( 
                        LayoutParams.WRAP_CONTENT, 
                        LayoutParams.FILL_PARENT));
                rows[3*i+2].setLayoutParams(new LayoutParams( 
                        LayoutParams.WRAP_CONTENT, 
                        LayoutParams.FILL_PARENT));

                rows[3*i].setBackgroundColor(color_background[(i%2)]);
                rows[3*i+1].setBackgroundColor(color_background[(i%2)]);
                rows[3*i+2].setBackgroundColor(color_background[(i%2)]);

                TextView txtMainInform=new TextView(activity);
                txtMainInform.setText(ap.GetMainInformation());
                txtMainInform.setLayoutParams(new LayoutParams( 
                        LayoutParams.WRAP_CONTENT, 
                        LayoutParams.WRAP_CONTENT));
                rows[3*i].addView(txtMainInform);
                rows[3*i].setVisibility(1);

                TextView txtMoreInform=new TextView(activity);
                txtMoreInform.setText(ap.GetMoreInformation());
                txtMoreInform.setLayoutParams(new LayoutParams( 
                        LayoutParams.WRAP_CONTENT, 
                        LayoutParams.WRAP_CONTENT));
                rows[3*i+1].addView(txtMoreInform);

                ImageButton imbCall=new ImageButton(activity);
                imbCall.setImageResource(R.drawable.phone);
                imbCall.setOnClickListener(new OnClickListener() {  

                    public void onClick(View v) {
                         if(ap.GetContact()!=null){
                          try {
                            activity.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + ap.GetContact())));
                          } catch (Exception e) {
                            e.printStackTrace();
                          }
                        }
                    }
                });
                imbCall.setMaxWidth(24);
                imbCall.setMinimumWidth(22);

                ImageButton imbGallery=new ImageButton(activity);
                imbGallery.setMaxWidth(24);
                imbGallery.setMinimumWidth(22);
                imbGallery.setImageResource(R.drawable.gallery_icon);


                ImageButton imbMap=new ImageButton(activity);
                imbMap.setImageResource(R.drawable.map);
                imbMap.setMaxWidth(24);  
                imbMap.setMinimumWidth(22);
                imbMap.setOnClickListener(new OnClickListener() {  

                    public void onClick(View v) {
                           Intent i = new Intent(activity,ResultMap.class);
                           activity.startActivity(i);
                    }  
                });

                ImageButton imbWay=new ImageButton(activity);
                imbWay.setMaxWidth(24);
                imbWay.setMinimumWidth(22);
                imbWay.setImageResource(R.drawable.walker);

                rows[3*i+2].addView(imbCall);
                rows[3*i+2].addView(imbGallery);
                rows[3*i+2].addView(imbMap);
                rows[3*i+2].addView(imbWay);
                i++;
            }

        }
        catch(Exception e){

        }
        return rows;
    }

1 Ответ

1 голос
/ 02 ноября 2010

Я полагаю, что вы добавляете каждую из этих строк в один и тот же TableLayout, или что-то в этом роде?Если это так, это связывает строки с другой, так что первый элемент в одной строке находится в том же столбце, что и первый элемент в другой строке.

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

|longish text blagh |       |       |       |
|price              |       |       |       |
|blah               |       |       |       |
| [------BTN------] | [BTN] | [BTN] | [BTN] |

Вы можете исправить это, поместив ряд кнопок вкакой-то другой вид, если это проблема.

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