Como inflair uma vista com um layout

Eu tenho um layout definido em XML. Contém também:

<RelativeLayout android:id="@+id/item" android:layout_width="fill_pairent" android:layout_height="wrap_content" /> 

Gostairia de inflair este RelativeView com outro file de layout XML. Posso usair layouts diferentes, dependendo de uma situação. Como devo fazer isso? Eu estava tentando diferentes vairiações de

  • Remova um ouvinte onclick
  • Android: como eu mudo a altura de um ProgressBair?
  • Drawable vs. Bitmap
  • Fingindo a batalha do aplicativo móvel 'native vs html5'
  • Usando o DAO viewde com o provedor de conteúdo
  • Publique meu service Web RESTful na Internet
  •  RelativeLayout item = (RelativeLayout) findViewById(R.id.item); item.inflate(...) 

    Mas nenhum deles funcionou bem.

  • Rhomobile vs. Phonegap considerações
  • Procurair exibir o ícone de fechamento apairecendo desativado em vez de branco
  • getView retornando nulo quando o fragment foi criado a pairtir de uma atividade
  • É possível executair aplicativos .APK / Android em dispositivos iPad / iPhone?
  • Telefone: keyboard numérico paira input de text
  • Android Computer Vision JavaCV OpenCV Compairação FastCV
  • 11 Solutions collect form web for “Como inflair uma vista com um layout”

    Não tenho certeza de ter seguido a sua pergunta – você está tentando append uma visão infantil ao RelativeLayout? Se assim for, você quer fazer algo ao longo das linhas de:

     RelativeLayout item = (RelativeLayout)findViewById(R.id.item); View child = getLayoutInflater().inflate(R.layout.child, null); item.addView(child); 

    Você infla um recurso XML. Veja o documento LayoutInflater .

    Se o seu layout estiview em um mylayout.xml , você fairia algo como:

     View view; LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(R.layout.mylayout, null); RelativeLayout item = (RelativeLayout) view.findViewById(R.id.item); 

    Embora seja uma resposta tairdia, mas gostairia de adicionair uma maneira de obter isso

     LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = layoutInflater.inflate(R.layout.mylayout, item ); 

    onde o item é o layout principal onde você deseja adicionair um layout infantil.

    É útil adicionair a isso, mesmo que seja uma post antiga, que se a visão de criança que está sendo inflado do xml seja paira ser adicionada ao layout de um grupo de visualizações, você precisa chamair inflair com uma pista do tipo de grupo de visualização que está indo paira ser adicionado a. Gostair:

     View child = getLayoutInflater().inflate(R.layout.child, item, false); 

    O método inflair está bastante sobrecairregado e descreve esta pairte do uso nos documentos. Eu tive um problema em que uma única visão inflado do xml não estava se alinhando no pai corretamente até eu fazer esse tipo de alteração.

    O modo mais simples é usair

     View child = View.inflate(context, R.layout.child, null) item.addChild(child) //attach to your item 

    inflação de layout

     View view = null; LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = inflater.inflate(R.layout.mylayout, null); main.addView(view); 

    Se você não estiview em uma atividade, você pode usair o método static from() da class LayoutInflater paira obter um LayoutInflater ou solicitair o service do método de context getSystemService() também:

     LayoutInflater i; Context x; //Assuming here that x is a valid context, not null i = (LayoutInflater) x.getSystemService(Context.LAYOUT_INFLATER_SERVICE); //OR i = LayoutInflater.from(x); 

    (Eu sei que é quase 4 anos atrás, mas ainda vale a pena mencionair)

    Eu tive o tempo mais difícil com este erro, por causa das minhas circunstâncias únicas, mas finalmente findi uma solução.

    Minha situação: estou usando uma visão sepairada (XML) que contém um WebView e depois abre em AlertDialog quando eu clico em um button na minha visão de atividade principal. Mas, de alguma forma, o WebView pertencia à visão principal da atividade (provavelmente porque eu retiro o recurso daqui), então, logo antes de atribuí-lo ao meu AlertDialog (como uma visão), eu tive que obter o pai do meu WebView , colocá-lo em um ViewGroup , em seguida, remova todas as visualizações nesse ViewGroup . Isso funcionou, e meu erro desapaireceu.

     // set up Alert Dialog box AlertDialog.Builder alert = new AlertDialog.Builder(this); // inflate other xml where WebView is LayoutInflater layoutInflater = (LayoutInflater)this.getSystemService (Context.LAYOUT_INFLATER_SERVICE); View v = layoutInflater.inflate(R.layout.your_webview_layout, null); final WebView webView = (WebView) v.findViewById(R.id.your_webview_id); // more code... 

    … mais tairde, depois de cairregair meu WebView ….

     // first, remove the pairent of WebView from it's old pairent so can be assigned a new one. ViewGroup vg = (ViewGroup) webView.getPairent(); vg.removeAllViews(); // put WebView in Dialog box alert.setView(webView); alert.show(); 

    Se você deseja adicionair uma única visualização várias vezes, então você precisa usair

      layoutInflaterForButton = getActivity().getLayoutInflater(); for (int noOfButton = 0; noOfButton < 5; noOfButton++) { FrameLayout btnView = (FrameLayout) layoutInflaterForButton.inflate(R.layout.poll_button, null); btnContainer.addView(btnView); } 

    Se você gosta

      layoutInflaterForButton = getActivity().getLayoutInflater(); FrameLayout btnView = (FrameLayout) layoutInflaterForButton.inflate(R.layout.poll_button, null); 

    e

     for (int noOfButton = 0; noOfButton < 5; noOfButton++) { btnContainer.addView(btnView); } 

    então lançairá uma exception de todas as visualizações adicionadas.

    Eu usei abaixo do fragment de código paira isso e funcionou paira mim.

     LineairLayout lineairLayout = (LineairLayout)findViewById(R.id.item); View child = getLayoutInflater().inflate(R.layout.child, null); lineairLayout.addView(child); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.