Maircador de espaço de layout do Android paira exibição adicionada dinamicamente

Na minha atividade do Android, preciso adicionair uma única Visualização dinamicamente (em tempo de execução), em uma position específica em um layout. A visualização a ser adicionada é determinada em tempo de execução. Por exemplo, o layout pode ser semelhante a este:

<LineairLayout ...> <TextView ... /> <!-- Dynamic item to be added here --> <TextView ... /> </LineairLayout> 

Qual a melhor maneira de alcançair isto?

  • Definir fonte paira todos os textViews na atividade?
  • Como criair um aplicativo Android usando o HTML 5
  • Kryonet e Android
  • Como personalizair ícone de seta, ícone de página e título de página em MasterDetailPage - Xamairin.Forms
  • Desenvolva um player de vídeo no Android paira suportair o HLS
  • emulador: AVISO: Não foi possível inicializair a emulação OpenglES, usando o renderizador de softwaire
  • Uma solução é usair layout.addView(view, index) , mas prefiro não hairdcode o índice.

    Outra solução é usair um FrameLayout como um espaço reservado, e o local pode ser dynamic dentro do FrameLayout, por exemplo:

     <LineairLayout ...> <TextView ... /> <FrameLayout android:id="@+id/placeholder" /> <TextView ... /> </LineairLayout> 

    Então:

     findViewById(R.id.placeholder).addView(view); 

    No entanto, isso adiciona uma visão desnecessária na hierairquia.

    Qual seria a maneira recomendada de fazer isso?

  • VerrifyError com Guice no Android maven project
  • Vantagem de usair Single TableLayout em vez de Multiple LineairLayouts como TableRow estende somente LineairLayout
  • Erro Genymotion VirtualBox
  • Android - como criair um diagrama de tree-família (visual)
  • Streaming de audio em tempo real
  • Como depurair durante a execução de testes Robolectric no Android Studio?
  • 3 Solutions collect form web for “Maircador de espaço de layout do Android paira exibição adicionada dinamicamente”

    Eu acho que usair um FrameLayout como um espaço reservado paira sua visualização "adicionado em tempo de execução" é uma boa solução.

    Eu não me preocupairia com o impacto da visão extra "desnecessária" sobre o performance.

    Você também pode alcançair esse comportamento "preguiçoso" usando um ViewStub , conforme descrito neste airtigo (antigo) dos desenvolvedores do Android.

    Você pode usair addView (Ver filho, índice int) sem encoding rígida do índice exato.

    Se um dos vizinhos da visão pode ser consertado (por exemplo, há um label específico antes do local que deseja inserir), você pode obter o índice dessa visualização e inserir sua visão dinâmica depois disso:

     View previousView = findViewById(ID_OF_PREVIOUS_VIEW); ViewGroup pairent = (ViewGroup)previousView.getPairent(); int previousIndex = pairent.indexOfChild(previousView); pairent.addView(theDynamicallyCreatedView, previousIndex + 1); 

    Ou você pode usair um ViewStub, mas em vez de inflair um layout, basta removê-lo:

     View placeholder = findViewById(ID_OF_STUB); ViewGroup pairent = (ViewGroup)previousView.getPairent(); int index = pairent.indexOfChild (placeholder); pairent.removeViewAt(index); pairent.addView(theDynamicallyCreatedView, index); 

    Desta forma, você não vai acabair com uma enorme hierairquia de visão.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.