Как я могу установить гравитацию вида и layout_gravity программно в Java вместо XML? - PullRequest
0 голосов
/ 07 ноября 2019

Для моей деятельности нам было поручено создавать представления полностью программно (не разрешено использовать XML).

Я создал то, что хочу, чтобы макет выглядел в XML. what I want the layout to look like in XML

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

Этоэто то, что у меня есть на мой взгляд.

public class NoteGridLayout extends GridLayout {

  public NoteGridLayout(final Context context, EditText titleEditText, Spinner spinner, EditText contentEditText, Button backButton) {
    super(context);

    setColumnCount(2);

    GridLayout.Spec colSpec, rowSpec;
    colSpec = GridLayout.spec(0, 1, 1);
    rowSpec = GridLayout.spec(0, 0, 0);
    GridLayout.LayoutParams titleParams = new GridLayout.LayoutParams(rowSpec, colSpec);

    colSpec = GridLayout.spec(1,1,1);
    rowSpec = GridLayout.spec(0,0,0);
    GridLayout.LayoutParams spinnerParams = new GridLayout.LayoutParams(rowSpec, colSpec);

    colSpec = GridLayout.spec(0,2,1);
    rowSpec = GridLayout.spec(1,1,1);
    GridLayout.LayoutParams contentParams = new GridLayout.LayoutParams(rowSpec, colSpec);

    colSpec = GridLayout.spec(0,2,1);
    rowSpec = GridLayout.spec(2,1,0);
    GridLayout.LayoutParams buttonParams = new GridLayout.LayoutParams(rowSpec, colSpec);

    titleParams.width = 0;
    titleParams.height = LayoutParams.WRAP_CONTENT;
    spinnerParams.width = 0;
    spinnerParams.height = LayoutParams.WRAP_CONTENT;
    contentParams.width = 0;
    contentParams.height = 0;
    buttonParams.width = LayoutParams.MATCH_PARENT;
    buttonParams.height = LayoutParams.WRAP_CONTENT;
    contentParams.setGravity(Gravity.TOP);

    titleEditText.setLayoutParams(titleParams);
    spinner.setLayoutParams(spinnerParams);
    contentEditText.setLayoutParams(contentParams);
    backButton.setLayoutParams(buttonParams);


    addView(titleEditText);
    addView(spinner);
    addView(contentEditText);
    addView(backButton);
  }
}

Две основные проблемы, с которыми я сталкиваюсь: 1. titleEditText, по-видимому, не охватывает весь столбец, скорее, счетчик занимает все дваколонны. 2. Невозможно установить гравитацию contentEditText, поместив текст в верхнюю часть поля.

Что мне нужно сделать, чтобы исправить эти две проблемы?

1 Ответ

0 голосов
/ 11 ноября 2019

Для layout_gravity ниже приведен фрагмент кода,

LinearLayout.LayoutParams params = new 
LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
params.weight = 1.0f;
params.gravity = Gravity.CENTER;
yourView.setLayoutParams(params);

Для Gravity используйте следующую строку,

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