A ideia de definir restrições programaticamente pode ser cansativa. Esta solução abaixo funcionará para qualquer layout, seja de restrição, linear, etc. Ter.
Tudo o que você precisa fazer é aumentar a exibição de forma programática e, quando criança, para o FrameLayout usando o addChild()método Então, durante o tempo de execução, sua visualização seria inflada e colocada na posição correta. Por recomendação do Android, você deve adicionar apenas um childView ao FrameLayout [link] .
Aqui está a aparência do seu código, supondo que você deseje criar o TextView programaticamente em uma posição específica:
Passo 1:
No layout que conteria a vista a ser inflada, coloque um FrameLayout na posição correta e dê um ID, por exemplo, "container".
Etapa 2
Crie um layout com elemento raiz como a visualização que você deseja aumentar durante o tempo de execução, chame o arquivo de layout como "textview.xml":
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
</TextView>
BTW, defina os parâmetros de layout do seu frameLayout como wrap_content, sempre o layout do quadro se tornará tão grande quanto o pai, ou seja, a atividade, ou seja, a tela do telefone.
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Se não estiver definido, porque uma visualização filho do quadro, por padrão, vai para a parte superior esquerda do layout do quadro, portanto, sua visualização simplesmente voará para a parte superior esquerda da tela.
etapa 3
No seu método oncreate, faça o seguinte:
FrameLayout frameLayout = findViewById(R.id.container);
TextView textView = (TextView) View.inflate(this, R.layout.textview, null);
frameLayout.addView(textView);
(Nota que a criação último parâmetro findViewByIdpara nulle adicionando vista chamando addView()em vista recipiente (FrameLayout) é o mesmo que simplesmente unindo a visão inflada pela passagem trueem terceiro parâmetro findViewById(). Para mais, veja este .)