2013-12-18 3 views
0

У меня есть набор кнопок, которые генерируются на основе количества элементов, извлеченных из базы данных SQLite. Кнопки генерируют и работают нормально, но они центрируют и выравнивают пространство. Значение, если оно есть: кнопка центрирована; Если их два: они равномерно распределяются по центру; и т. д.Как предотвратить программно сгенерированные кнопки выравнивания по центру в Android?

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

Снова код работает и отлично реагирует в стороне от выравнивания. У меня похожие проблемы с другими действиями, и я уверен, что это связано.

Я включил некоторый код, который может показать, что я делаю:

imgTitleTable = (TableLayout) findViewById(R.id.imagesTableLayout); 

int i = 0; 
while (i < imgTitle.length) { 
    if (i % 6 == 0) { 
     tr = new TableRow(this); 
     tr.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 
       LayoutParams.WRAP_CONTENT)); 
     imgTitleTable.addView(tr); 
     imgtr = new TableRow(this); 
     imgtr.setLayoutParams(new LayoutParams(
       LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 
     imgTitleTable.addView(imgtr); 
    } 
    // add images 
    ImageButton imgButton = new ImageButton(this); 
    imgButton.setImageResource(R.drawable.images_sample); 
    imgButton.setLayoutParams(new LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f)); 
    imgButton.setBackground(null); 
    imgButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View view) { 

      Intent theIntent = new Intent(getApplicationContext(), 
        Viewer.class); 
      startActivity(theIntent); 
     } 
    }); 
    // add img title 
    TextView title = new TextView(this); 
    title.setText(imgTitle[i]); 
    title.setId(i); 
    title.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT, 1f)); 
    title.setGravity(Gravity.CENTER); 
    title.setWidth(imgButton.getDrawable().getIntrinsicWidth()); 
    title.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View view) { 

      Intent theIntent = new Intent(getApplicationContext(), 
        Viewer.class); 
      startActivity(theIntent); 
     } 
    }); 
    tr.addView(imgButton); 
    imgtr.addView(title); 
    i++; 
} 

ответ

0

Try

TableRow.LayoutParams params = new TableRow.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, 
       TableLayout.LayoutParams.WRAP_CONTENT); 
params.gravity=Gravity.LEFT; 
imgButton.setLayoutParams(params); 
+0

.setGravity() зарезервирована для макета. Это вызывает ошибку, поскольку imgButton - это тип ImageButton. – dcp3450

+0

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

Смежные вопросы