У меня есть таблица, которая программно заполнена TableRows. Последняя строка должна содержать текст (сумма зарплаты: "45K") и изображение рядом с текстом. Так что они вместе, с минимальным пространством между концом текста и изображения. Я сделал следующий код:
LinearLayout linearLayout = new LinearLayout(context);
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
TableRow.LayoutParams params1 = new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT, (float) weights[6]);
params1.gravity = Gravity.CENTER;
linearLayout.setLayoutParams(params1);
linearLayout.setGravity(Gravity.CENTER);
TextView h1 = new TextView(context);
h1.setText(SharedFunctions.makeSalaryString(scout.getSalary()));
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, (float) 0.9);
h1.setLayoutParams(params);
h1.setTextColor(resources.getColor(standingsTableHeadTXT));
h1.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL);
h1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
ImageView cash = new ImageView(context);
params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, (float) 0.1);
params.gravity = Gravity.LEFT | Gravity.CENTER_VERTICAL;
cash.setLayoutParams(params);
cash.setImageDrawable(resources.getDrawable(R.mipmap.usd_sign));
linearLayout.addView(h1);
linearLayout.addView(cash);
tableRow.addView(linearLayout);
Проблема в том, что он делает то, что хотел, но все это не по центру:
![example](https://i.stack.imgur.com/wyMAR.png)
Как правильно их соединить и в то же время центрировать?
РЕДАКТИРОВАТЬ 1:
Если я подставлю строку
h1.setGravity (Gravity.RIGHT | Gravity.CENTER_VERTICAL);
по
h1.setGravity (Gravity.CENTER);
Я получу это:
![example2](https://i.stack.imgur.com/r2EpP.png)
Что не хорошо, потому что изображение с наличными показывает слишком далеко (должно быть как на первом рисунке). Хотя это решает проблему выравнивания центра.
РЕДАКТИРОВАТЬ 2: Код функции, которая заполняет строку элементами
public static TableRow createScoutRow(ScoutingPlayerJson scout, TableLayout tableLayout, Context context, Resources resources) {
double[] weights = new double[]{0.1680, 0.2240, 0.1360, 0.0800, 0.0960, 0.1360, 0.1600};
TableRow tableRow = new TableRow(context);
TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT, 1);
tableRow.setLayoutParams(lp);
tableRow.setOrientation(TableRow.HORIZONTAL);
tableRow.setBackgroundColor(resources.getColor(trainingPlayerSelectRowColor));
tableRow.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
tableRow.setTag(scout.getId());
{
TextView h1 = new TextView(context);
h1.setText(String.valueOf(scout.getCoins()));
TableRow.LayoutParams params = new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT, (float) weights[0]);
h1.setLayoutParams(params);
h1.setTextColor(resources.getColor(standingsTableHeadTXT));
h1.setGravity(Gravity.CENTER);
h1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
tableRow.addView(h1);
}
{
TextView h1 = new TextView(context);
h1.setText(scout.getFirstname().charAt(0) + ". " + scout.getSurname());
TableRow.LayoutParams params = new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT, (float) weights[1]);
h1.setLayoutParams(params);
h1.setTextColor(resources.getColor(standingsTableHeadTXT));
h1.setGravity(Gravity.LEFT);
h1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
tableRow.addView(h1);
}
{
TextView h1 = new TextView(context);
h1.setText(scout.getAge().toString());
TableRow.LayoutParams params = new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT, (float) weights[2]);
h1.setLayoutParams(params);
h1.setTextColor(resources.getColor(standingsTableHeadTXT));
h1.setGravity(Gravity.CENTER);
h1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
tableRow.addView(h1);
}
{
TextView h1 = new TextView(context);
h1.setText(scout.getBatThrowType().toString().substring(3));
TableRow.LayoutParams params = new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT, (float) weights[3]);
h1.setLayoutParams(params);
h1.setTextColor(resources.getColor(standingsTableHeadTXT));
h1.setGravity(Gravity.CENTER);
h1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
tableRow.addView(h1);
}
{
LinearLayout linearLayout = new LinearLayout(context);
linearLayout.setOrientation(LinearLayout.VERTICAL);
TableRow.LayoutParams params1 = new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT, (float) weights[4]);
linearLayout.setLayoutParams(params1);
linearLayout.setGravity(Gravity.CENTER);
Set<String> set = Utils.fixPrefferedPositions(scout.getPrefferedPosition());
int mysize = set.size();
for (String position: set) {
View imview = getImageViewByPosition(position, mysize, context);
linearLayout.addView(imview);
}
tableRow.addView(linearLayout);
}
{
ImageView imview = getImageViewByRating(scout.getRating(), (float) weights[5], context);
tableRow.addView(imview);
}
{
LinearLayout linearLayout = new LinearLayout(context);
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
TableRow.LayoutParams params1 = new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT, (float) weights[6]);
params1.gravity = Gravity.CENTER;
linearLayout.setLayoutParams(params1);
linearLayout.setGravity(Gravity.CENTER);
TextView h1 = new TextView(context);
h1.setText(SharedFunctions.makeSalaryString(scout.getSalary()));
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, (float) 0.9);
h1.setLayoutParams(params);
h1.setTextColor(resources.getColor(standingsTableHeadTXT));
//h1.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL);
h1.setGravity(Gravity.CENTER);
h1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
ImageView cash = new ImageView(context);
params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, (float) 0.1);
params.gravity = Gravity.LEFT | Gravity.CENTER_VERTICAL;
cash.setLayoutParams(params);
cash.setImageDrawable(resources.getDrawable(R.mipmap.usd_sign));
linearLayout.addView(h1);
linearLayout.addView(cash);
tableRow.addView(linearLayout);
}
return tableRow;
}
Часть макета, в которой определяется таблица (в которую добавляются строки):
<!--0.08 0.08 0.25 0.09 0.14 0.15 0.21-->
<TableLayout
android:id="@+id/scoutsTable"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:divider="@drawable/divider_stand_table_list"
android:showDividers="middle"
android:isScrollContainer="true"
android:stretchColumns="7"
android:orientation="horizontal">
</TableLayout>
</android.support.v4.widget.NestedScrollView>