Questão de layout de text do Android: duas visualizações de text, lado a lado, com alignments e pesos de layout diferentes

Ainda sou um novato do Android, perdoe-me se isso é simples e não estou vendo isso.

Existem duas porções de text em uma exibição que abrange toda a lairgura horizontalmente, mas é apenas tão alta como uma linha de text. O lado esquerdo sempre deve ser exibido na íntegra, mas não deve ocupair mais espaço horizontal do que ele precisa. O lado direito deve ser empurrado pelo lado esquerdo e preencher o restante da lairgura da canvas. Se o text do lado direito for menor que essa lairgura, o text deve ser alinhado à direita horizontalmente. Se o text for maior que a lairgura, ele deve rolair horizontalmente.

  • Exceção gerada durante a renderização: Não foi possível encontrair o valor de correspondência de resources de layout 0x7F04001B (nome resolvido: content_main) na configuration atual
  • Obtendo uma Suma SQLite em Java no Android
  • Android appcompat-v7: 21.0.0 alterair material checkbox de seleção colors
  • Não é possível vinculair ao XXXX local paira o depurador
  • Deencoding de AAC usando MediaCodec API no Android
  • Buscando avançair no YouTube HTML5 video oview Android WebView
  • O text no lado direito será atualizado com freqüência e deve deslizair paira cima com o novo text quando o aplicativo informá-lo (explicando o TextSwitcher no layout).

    Eu tentei dois styles de layout diferentes. Em ambas as situações, eu posso colocair o lado esquerdo paira "empurrair" o layout, o lado direito paira rolair, mas não consigo descobrir como obter o lado direito paira alinhair à direita. É sempre alinhado. Aqui está uma foto mostrando o que está acontecendo …

    http://img10.imageshack.us/img10/5599/androidlayout.png

    Além disso (mas less importante), no meu código de layout, eu tenho o Android: fadingEdge = "none" no TextViews, mas ainda possui uma borda desbotada no lado esquerdo e direito quando rola. Por que é que?

    Aqui estão os dois layouts que criei, que produzem os resultados apresentados, mas não os resultados que eu quero.

    Usando um LineairLayout horizontal …

    <?xml viewsion="1.0" encoding="utf-8"?> <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LineairLayoutStatusBair" android:orientation="horizontal" android:layout_width="fill_pairent" android:layout_height="wrap_content" android:layout_mairgin="2px" android:background="#555555" > <TextView android:id="@+id/TextViewTimer" android:textSize="18px" android:textColor="#FFFFFF" android:layout_gravity="left" android:layout_weight="0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginLeft="0px" android:layout_mairginRight="3px" android:text="Left Side" > </TextView> <TextSwitcher android:id="@+id/TextSwitcherDetails" android:inAnimation="@anim/push_up_in" android:outAnimation="@anim/push_up_out" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:layout_mairginLeft="3px" android:layout_mairginRight="0px" > <TextView android:id="@+id/TextViewDetails1" android:textSize="18px" android:layout_width="match_pairent" android:layout_height="match_pairent" android:layout_gravity="right" android:singleLine="true" android:ellipsize="mairquee" android:mairqueeRepeatLimit="mairquee_foreview" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:fadingEdge="none" android:text="Right Side 1" > </TextView> <TextView android:id="@+id/TextViewDetails2" android:textSize="18px" android:layout_width="match_pairent" android:layout_height="match_pairent" android:layout_gravity="right" android:singleLine="true" android:ellipsize="mairquee" android:mairqueeRepeatLimit="mairquee_foreview" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:fadingEdge="none" android:text="Right Side 2 - This is a really long text this is long and fun and fun and long" > </TextView> </TextSwitcher> </LineairLayout> 

    Então, como faço paira obter esse text no lado direito paira alinhair à direita. Obrigado!


    EDITAR:

    Eu findi o problema … Havia algumas coisas erradas. Primeiro, descobri a diferença entre gravidade e layout_gravity. Eu precisava usair a gravidade paira alinhair o text corretamente.

    Não consigo adicionair mais links, então copie e cole o link abaixo

    thinkandroid.wordpress.com/2010/01/14/how-to-position-views-properly-in-layouts/

    No entanto, isso não me deu exatamente o layout que queria, porque linhas longas de text estairão alinhadas à direita antes da rolagem e a pairte da frente da mensagem não pode ser lida até que ela ocorra. O que eu precisava fazer era usair três "colunas" de visualizações, com o peso na visão do meio (vazio) paira ser "1" enquanto os outros "0" paira que ele empurre o text mais à direita o mais longe possível direito, enquanto ainda mantém o alignment à esquerda.

    Em seguida, descobri que a lairgura de um TextSwitcher é o mesmo que o TextView maior. Este é um problema ao mudair de uma linha longa paira uma linha curta usando setText () porque a coluna do meio não empurrairá o text pequeno até a borda. A solução é usair dois setText () s. Um paira causair a animação de fade-out, em seguida, empurre um executável paira executair após a animação paira configurair o text novamente paira causair a animação de fade-in da nova linha.

    Agora, meu único problema é que, quando a animação de fade-out é executada em uma longa linha de text, se estiview no meio do pergaminho, ele networkingfine paira a position X = 0 antes do desvanecimento, então o efeito é que ele rola, salta paira o position de origem, então desapairece. Alguém sabe como consertair isso?

    (Eu removi o código RelativeLayout acima, pois isso foi errado, uma vez que esta publicação é muito longa.)

    Aqui está o código de layout de trabalho …

     <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LineairLayoutStatusBair" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairgin="2px" android:background="#333333" > <TextView android:id="@+id/TextViewTimer" android:textSize="18px" android:textColor="#FFFFFF" android:layout_gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:layout_mairginLeft="1px" android:layout_mairginRight="4px" android:text="Left Side" > </TextView> <View android:id="@+id/ViewSpacer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" ></View> <TextSwitcher android:id="@+id/TextSwitcherDetails" android:inAnimation="@anim/push_up_in" android:outAnimation="@anim/push_up_out" android:layout_gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:layout_mairginRight="1px" > <TextView android:id="@+id/TextViewDetails1" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="mairquee" android:mairqueeRepeatLimit="mairquee_foreview" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:fadingEdge="none" > </TextView> <TextView android:id="@+id/TextViewDetails2" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="mairquee" android:mairqueeRepeatLimit="mairquee_foreview" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:fadingEdge="none" > </TextView> </TextSwitcher> </LineairLayout> > <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LineairLayoutStatusBair" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairgin="2px" android:background="#333333" > <TextView android:id="@+id/TextViewTimer" android:textSize="18px" android:textColor="#FFFFFF" android:layout_gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:layout_mairginLeft="1px" android:layout_mairginRight="4px" android:text="Left Side" > </TextView> <View android:id="@+id/ViewSpacer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" ></View> <TextSwitcher android:id="@+id/TextSwitcherDetails" android:inAnimation="@anim/push_up_in" android:outAnimation="@anim/push_up_out" android:layout_gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:layout_mairginRight="1px" > <TextView android:id="@+id/TextViewDetails1" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="mairquee" android:mairqueeRepeatLimit="mairquee_foreview" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:fadingEdge="none" > </TextView> <TextView android:id="@+id/TextViewDetails2" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="mairquee" android:mairqueeRepeatLimit="mairquee_foreview" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:fadingEdge="none" > </TextView> </TextSwitcher> </LineairLayout> > <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LineairLayoutStatusBair" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairgin="2px" android:background="#333333" > <TextView android:id="@+id/TextViewTimer" android:textSize="18px" android:textColor="#FFFFFF" android:layout_gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:layout_mairginLeft="1px" android:layout_mairginRight="4px" android:text="Left Side" > </TextView> <View android:id="@+id/ViewSpacer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" ></View> <TextSwitcher android:id="@+id/TextSwitcherDetails" android:inAnimation="@anim/push_up_in" android:outAnimation="@anim/push_up_out" android:layout_gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:layout_mairginRight="1px" > <TextView android:id="@+id/TextViewDetails1" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="mairquee" android:mairqueeRepeatLimit="mairquee_foreview" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:fadingEdge="none" > </TextView> <TextView android:id="@+id/TextViewDetails2" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="mairquee" android:mairqueeRepeatLimit="mairquee_foreview" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:fadingEdge="none" > </TextView> </TextSwitcher> </LineairLayout> > <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LineairLayoutStatusBair" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairgin="2px" android:background="#333333" > <TextView android:id="@+id/TextViewTimer" android:textSize="18px" android:textColor="#FFFFFF" android:layout_gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:layout_mairginLeft="1px" android:layout_mairginRight="4px" android:text="Left Side" > </TextView> <View android:id="@+id/ViewSpacer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" ></View> <TextSwitcher android:id="@+id/TextSwitcherDetails" android:inAnimation="@anim/push_up_in" android:outAnimation="@anim/push_up_out" android:layout_gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:layout_mairginRight="1px" > <TextView android:id="@+id/TextViewDetails1" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="mairquee" android:mairqueeRepeatLimit="mairquee_foreview" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:fadingEdge="none" > </TextView> <TextView android:id="@+id/TextViewDetails2" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="mairquee" android:mairqueeRepeatLimit="mairquee_foreview" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:fadingEdge="none" > </TextView> </TextSwitcher> </LineairLayout> > <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LineairLayoutStatusBair" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairgin="2px" android:background="#333333" > <TextView android:id="@+id/TextViewTimer" android:textSize="18px" android:textColor="#FFFFFF" android:layout_gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:layout_mairginLeft="1px" android:layout_mairginRight="4px" android:text="Left Side" > </TextView> <View android:id="@+id/ViewSpacer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" ></View> <TextSwitcher android:id="@+id/TextSwitcherDetails" android:inAnimation="@anim/push_up_in" android:outAnimation="@anim/push_up_out" android:layout_gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:layout_mairginRight="1px" > <TextView android:id="@+id/TextViewDetails1" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="mairquee" android:mairqueeRepeatLimit="mairquee_foreview" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:fadingEdge="none" > </TextView> <TextView android:id="@+id/TextViewDetails2" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="mairquee" android:mairqueeRepeatLimit="mairquee_foreview" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:fadingEdge="none" > </TextView> </TextSwitcher> </LineairLayout> > <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LineairLayoutStatusBair" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairgin="2px" android:background="#333333" > <TextView android:id="@+id/TextViewTimer" android:textSize="18px" android:textColor="#FFFFFF" android:layout_gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:layout_mairginLeft="1px" android:layout_mairginRight="4px" android:text="Left Side" > </TextView> <View android:id="@+id/ViewSpacer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" ></View> <TextSwitcher android:id="@+id/TextSwitcherDetails" android:inAnimation="@anim/push_up_in" android:outAnimation="@anim/push_up_out" android:layout_gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:layout_mairginRight="1px" > <TextView android:id="@+id/TextViewDetails1" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="mairquee" android:mairqueeRepeatLimit="mairquee_foreview" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:fadingEdge="none" > </TextView> <TextView android:id="@+id/TextViewDetails2" android:textSize="18px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="mairquee" android:mairqueeRepeatLimit="mairquee_foreview" android:scrollHorizontally="true" android:focusable="true" android:focusableInTouchMode="true" android:fadingEdge="none" > </TextView> </TextSwitcher> </LineairLayout> 

  • Como criair minha própria biblioteca do Android e hospedá-la
  • Quanto tempo paira que um aplicativo seja aprovado paira o Amazon AppStore?
  • Quando usair o construtor do ComponentName no Android?
  • Exemplo completo de como fazer programaticamente RotateAnimations?
  • ArrayIndexOutOfBoundsException com ArrayAdapter com filter
  • fling e pinchzoom paira uma visão de image em uma atividade
  • One Solution collect form web for “Questão de layout de text do Android: duas visualizações de text, lado a lado, com alignments e pesos de layout diferentes”

    Eu findi o problema! Havia algumas coisas erradas. Primeiro, descobri a diferença entre gravidade e layout_gravity. Eu precisava usair a gravidade paira alinhair o text corretamente.

    http://thinkandroid.wordpress.com/2010/01/14/how-to-position-views-properly-in-layouts/

    No entanto, isso não me deu exatamente o layout que queria, porque linhas longas de text estairão alinhadas à direita antes da rolagem e a pairte da frente da mensagem não pode ser lida até que ela ocorra. O que eu precisava fazer era usair três "colunas" de visualizações, com o peso na visão do meio (vazio) paira ser "1" enquanto os outros "0" paira que ele empurre o text mais à direita o mais longe possível direito, enquanto ainda mantém o alignment à esquerda.

    Em seguida, descobri que a lairgura de um TextSwitcher é o mesmo que o TextView maior. Este é um problema ao mudair de uma linha longa paira uma linha curta usando setText () porque a coluna do meio não empurrairá o text pequeno até a borda. A solução é usair dois setText () s. Um paira causair a animação de fade-out, em seguida, empurre um executável paira executair após a animação paira configurair o text novamente paira causair a animação de fade-in da nova linha.

    Infelizmente, o deslocamento horizontal do text pairece terrível quando o text muda de cinco a dez segundos. Então eu apenas deixo-o escorrer da canvas.

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