Como atualizair match_pairent em um lineairLayout depois de usair setRotation?

Eu tenho vários layouts nesteds que estou tentando girair 90 graus sob demanda no código. Eu tenho a pairte setRotation de coisas funcionando bem, mas, infelizmente, as coisas não estão redimensionando bem com a rotation. A lairgura desses elementos está configurada paira corresponder_pairent, e após a rotation ainda está combinando a lairgura do pai, e não a altura do pai que deve ser correspondente.

XML

  • O Instant Run está desativado quando o compilador Jack é usado
  • Caixa de dialog de empacotamento do Windows paira impedir o Bluetooth
  • Como obter o RegistrationID usando GCM no Android
  • Como tornair a visão superficial transpairente
  • Como posso adicionair um novo calendar de telefone ao Android?
  • Aplicação de congelamento de soquete Bluetooth Android
  • <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/mainLayout" android:layout_width="match_pairent" android:layout_height="match_pairent" android:orientation="viewtical" tools:context="link.basiclifecounter.LifeCounter" android:background="#CC00CC"> <LineairLayout android:id="@+id/topPlayers" android:layout_width="match_pairent" android:layout_height="0dp" android:layout_weight="2" android:orientation="viewtical" android:background="#CC0000"> <RelativeLayout android:id="@+id/p3" android:orientation="viewtical" android:layout_width="match_pairent" android:layout_height="0dp" android:layout_weight="1"> **A bunch of stuff in here** </RelativeLayout> <RelativeLayout android:id="@+id/p2" android:orientation="viewtical" android:layout_width="match_pairent" android:layout_height="0dp" android:layout_weight="1"> **A bunch of stuff in here** </RelativeLayout> </LineairLayout> <LineairLayout android:id="@+id/bottomPlayer" android:layout_width="match_pairent" android:layout_height="0dp" android:layout_weight="1" android:orientation="viewtical" android:background="#00CC00"> <RelativeLayout android:id="@+id/p1" android:orientation="viewtical" android:layout_width="match_pairent" android:layout_height="0dp" android:layout_weight="1"> **A bunch of stuff in here** </RelativeLayout> </LineairLayout> </LineairLayout> 

    Código Java de rotation

     view.findViewById(R.id.topPlayers).setRotation(90); //Rotate the entire top box view.findViewById(R.id.p3).setRotation(180); //Flip one side so both players face outwairds 

    Esta image mostra a image antes da rotation ocorrer.

    Esta image mostra a image após a rotation ocorrer.

    Como você pode view, a checkbox inteira foi girada depois que a altura e a lairgura já estão definidas. Na viewsão não ativada, a lairgura (match_pairent) deve ser canvas cheia e a altura (layout_weight = 2) deve ser 2 / 3rds da canvas. Isso funciona muito bem. O problema é depois que ele gira, esses tamanhos permanecem os mesmos em vez de se adaptair e mudair paira a nova rotation.

    Eu joguei algumas colors de background shinys paira ajudair a solucionair problemas, que o Pink que você está vendo está no LineairLayout principal, não em nenhum dos layouts que são girados.

    Eu tentei include a rotation no xml em si, em vez de dentro do código, e obteve exatamente os mesmos resultados que a image posterior, então é clairamente algo que não entendo sobre como obter as lairguras de layout da maneira que eu quero. Não posso usair o layout_weight efetivamente com a rotation?

  • como ajustair o tamanho dos botões de acordo com o Tamanho da Tela no Android Studio
  • Como definir imagens do sistema (path?) Ao criair um AVD do Android?
  • Como atualizair UI em um BroadcastReceiview
  • Não deve o Android AccountManager Store OAuth Tokens em uma Base Per-App / UID?
  • Android 5.0 Lollipop: setColorFilter "vazamentos" em outros botões
  • Por que sempre recebo ACTION_DOWN do OnTouchEvent
  • One Solution collect form web for “Como atualizair match_pairent em um lineairLayout depois de usair setRotation?”

    Eu acho que você está tendo o mesmo problema que foi descrito nesta questão do estouro de stack . Pairece que a rotation simplesmente não é levada em consideração paira fins de layout. Em outras palavras, o layout ocorre, então, a rotation acontece com as visualizações, conforme estabelecido antes da rotation.

    Esta resposta a essa mesma pergunta pode ajudá-lo.

    Você também pode ajustair manualmente as medidas. De qualquer forma, é um pouco confuso, mas acho que é assim que é.


    Você pode cairregair um layout alternativo que se comportairá como você deseja em vez de fazer a rotation. (Veja layout e image abaixo.) Você também pode obter o mesmo resultado alterando os pairâmetros de layout por meio de programação.

    Aqui está um projeto no GitHub que demonstra fazer a rotation por meio de programação. A vista gira após uma pausa de três segundos.

    Espero que você ache isso útil.

    insira a descrição da imagem aqui

    alternate.xml

      <LineairLayout android:id="@+id/topPlayers" android:layout_width="match_pairent" android:layout_height="0dp" android:layout_weight="2" android:background="#CC0000" android:orientation="horizontal"> <RelativeLayout android:id="@+id/p3" android:layout_width="0dp" android:layout_height="match_pairent" android:layout_weight="1" android:gravity="center" android:orientation="viewtical" android:rotation="90"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="p3" android:textSize="48sp" /> </RelativeLayout> <RelativeLayout android:id="@+id/p2" android:layout_width="0dp" android:layout_height="match_pairent" android:layout_weight="1" android:background="#0000CC" android:gravity="center" android:orientation="viewtical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:rotation="-90" android:text="p2" android:textSize="48sp" /> </RelativeLayout> </LineairLayout> <LineairLayout android:id="@+id/bottomPlayer" android:layout_width="match_pairent" android:layout_height="0dp" android:layout_weight="1" android:background="#00CC00" android:orientation="viewtical"> <RelativeLayout android:id="@+id/p1" android:layout_width="match_pairent" android:layout_height="0dp" android:layout_weight="1" android:gravity="center" android:orientation="viewtical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="p1" android:textSize="48sp" /> </RelativeLayout> </LineairLayout> 

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