2013-09-30 7 views
0

그래픽 배너의 경우 두 개의 TextView이 서로 위에 놓여 있습니다.Android : 가장 짧은 줄이있는 TextView 겹쳐 쓰기

위쪽은 TextView이고, 아래쪽은 위쪽으로 정렬되어 텍스트가 항상 같은 중심을 기준으로 배치됩니다. 레이아웃에서이 같은 TextViews보기 :

<LinearLayout 
    android:layout_height="match_parent" 
    android:layout_width="fill_parent" 
    android:paddingLeft="126dp" 
    android:paddingRight="10dp" 
    android:orientation="vertical"> 
    <TextView 
     android:id="@+id/title" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:maxLines="2" 
     android:gravity="bottom|left" 
     android:textColor="#FFFFFF" 
     android:textStyle="bold" 
     android:textSize="16sp" /> 
    <TextView 
     android:id="@+id/artist" 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:maxLines="2" 
     android:gravity="top|left" 
     android:textColor="#AAAAAA" 
     android:textSize="16sp" /> 
</LinearLayout> 

내 문제가 상단 TextView 텍스트를 감싸는 경우, 포장이 작은 것과 마지막 줄에 때문이다, 나는에 정렬하고 고려하지 바닥. 아래를 참조하십시오.

banner example

내가 중력을 기대했을 것이다

는 텍스트 줄 바꿈이 수익에 텍스트의 대부분을이 방식으로 일어날 수 있도록합니다.

마지막 줄 맨 너의 단어 줄 바꿈을 수행하기 위해 TextView을 얻을 수있는 방법에 대한 제안이 있으십니까?

읽어 주셔서 감사합니다.

+0

예상되는 동작과 표시된 동작을 이해하지 못합니다. 여기에 뭐가 잘못되었는지 사진에 보여 주시겠습니까? –

+0

안드로이드에서는 불가능하다고 생각합니다. – GVillani82

답변

4

지금까지 내가 아는 한, 거기에는 마지막 라인 첫 mannor 없습니다 당신이 필요로하지만, 내가주고 싶은 몇 가지 제안이 있습니다 :

해결 방법 1 : (상단 텍스트보기를 보자 하나)는 단선이고 줄임표가 있어야합니다. 이 방법을 사용하면 텍스트의 끝 부분에 한 줄의 ... 및 텍스트 끝에 컨테이너의 맨 아래에 텍스트보기를 항상 보장 할 수 있습니다. 단점은 텍스트가 완전히 표시되지 않을 수 있습니다.

android:singleLine="true" 
android:ellipsize="end" 

해결 방법 2 : 당신은 텍스트의 각 문자의 크기를 계산해야, 그 두 텍스트 뷰의 텍스트를 지정,이 개 텍스트보기로 맨 위 텍스트 뷰를 분할합니다. 예를 들어, 귀하의 경우. 텍스트의 크기를 계산하고 텍스트보기의 크기 (이 경우 너비)와 비교 한 후에는 "20/20"을 상단 상단에 할당하고 나머지는 "Experience - 2 of 2 디럭스) "를 맨 아래쪽에 연결합니다. 이것은 2 줄 이상의 긴 텍스트에도 적용될 수 있습니다. 그냥 정확하게 계산하고 적용하면 효과가 있습니다. 다음은 픽셀 단위로 텍스트 크기를 계산하는 코드입니다.

Paint p = new Paint(); 
     String your_text = "This is your text"; 
     float size = p.measureText(your_text); 
     // assign one part to the top-top 
     // assign another part to the top-bottom 

희망이 있습니다.

0
// try this way 
<LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center"> 

     <ImageView 
       android:layout_width="70dp" 
       android:layout_height="70dp" 
       android:adjustViewBounds="true" 
       android:scaleType="fitXY" 
       android:src="@drawable/ic_launcher"/> 

     <LinearLayout 
       android:layout_width="0dp" 
       android:layout_weight="1" 
       android:layout_marginLeft="5dp" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 

      <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="First TextView"/> 
      <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="1dp" 
        android:text="Second TextView"/> 

     </LinearLayout> 
</LinearLayout>