Eu tenho um layout definido em XML. Contém também:
<RelativeLayout
android:id="@+id/item"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
Eu gostaria de inflar esse RelativeView com outro arquivo de layout XML. Eu posso usar layouts diferentes, dependendo da situação. Como devo fazer isso? Eu estava tentando diferentes variações de
RelativeLayout item = (RelativeLayout) findViewById(R.id.item);
item.inflate(...)
Mas nenhum deles funcionou bem.
android
android-layout
layout-inflater
android-inflate
Michal Dymel
fonte
fonte
Você aumenta um recurso XML. Consulte o documento LayoutInflater .
Se seu layout estiver em um mylayout.xml , você faria algo como:
fonte
Embora resposta tardia, mas gostaria de acrescentar que uma maneira de obter isso
onde
item
é o layout pai ao qual você deseja adicionar um layout filho.fonte
R
recursos como referências a um objeto, eles são apenasint
s. Você deve usar afindViewById
transmissão doR
recurso e digite convertê-lo no objeto desejado. Então você pode usá-lo em chamadas de função comoinflate
. (. ieViewGroup item = (ViewGroup) findViewById(R.layout.activity_layout);
... então você pode usaritem
como acima.)RelativeLayout
lugar doViewGroup
meu exemplo acima, pois você não pode instanciar a classe baseViewGroup
. A regra de edição de 5 minutos me pegou. lolÉ útil acrescentar a isso, mesmo que seja uma postagem antiga, que se a visualização filho que está sendo inflada a partir do xml for adicionada ao layout de um grupo de visualizações, você precisa chamar inflar com uma pista de que tipo de grupo de visualizações será exibido. para ser adicionado a. Gostar:
O método inflate está bastante sobrecarregado e descreve essa parte do uso nos documentos. Eu tive um problema em que uma única exibição inflada do xml não estava alinhada corretamente nos pais até que eu fiz esse tipo de alteração.
fonte
A maneira ainda mais simples é usar
fonte
View.inflate()
é a melhor maneira, não é desnecessárioLayoutInflater
ougetSystemService(Context.LAYOUT_INFLATER_SERVICE)
todo esse incômodo! : Dinflação de layout
fonte
Se você não estiver em uma atividade, poderá usar o
from()
método estático daLayoutInflater
classe para obter umLayoutInflater
ou solicitar o serviçogetSystemService()
também pelo método de contexto :(Eu sei que faz quase 4 anos, mas ainda vale a pena mencionar)
fonte
Se você quiser adicionar uma única visualização várias vezes, precisará usar
Se você gosta
e
então ele lançará uma exceção de todas as visualizações adicionadas prontas.
fonte
AttachToRoot Definido como True
Apenas pense que especificamos um botão em um arquivo de layout XML com a largura e a altura do layout definidas como match_parent.
Neste botão, clique em Evento que podemos definir o código a seguir para aumentar o layout nesta atividade.
Espero que esta solução funcione para você.!
fonte
Tente este código:
fonte
Eu tive mais dificuldade com esse erro, devido às minhas circunstâncias únicas, mas finalmente encontrei uma solução.
Minha situação: estou usando uma exibição separada (XML) que contém a
WebView
e é aberta em umaAlertDialog
quando clico em um botão na minha exibição principal de atividades. Mas, de uma forma ou de outra,WebView
pertencia à visualização principal de atividade (provavelmente porque eu extraí o recurso daqui), logo antes de atribuí-lo à minhaAlertDialog
(como visualização), tive que obter o pai da minhaWebView
, colocá-la emViewGroup
, em seguida, remova todos os pontos de vista sobre issoViewGroup
. Isso funcionou e meu erro desapareceu..... mais tarde, depois que eu carreguei o meu
WebView
....fonte
Se você está tentando anexar uma exibição filho ao RelativeLayout? você pode fazer seguindo
fonte
Com o Kotlin, você pode usar:
fonte
Eu usei abaixo o trecho de código para isso e funcionou para mim.
fonte