2016-11-09 58 views
1

我有一個帶有標題TextView的LinearLayout,然後是一個包含TextView的ListView。這與其中有一個GridView的另一個類似的LinearLayout相鄰。帶有TextView的ListView只能對文本進行中心打包

ListView中的TextView不會居中,除非文字由於很長而回繞。

當我硬連線ListView的寬度時,我確實將它們居中,但是它有另一個副作用,即長條線兩端的文本被切斷,即使它被包裹。只是沒有正確包裝。所以我通過將硬編碼寬度移動到封閉的LinearLayout來解決這個問題,但現在有這個問題。

有趣的是,我的類似的GridView似乎沒有問題,雖然它也有一個'背景可繪製',這是一個帶圓角的矩形。

佈局是:

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:weightSum="3"> 

    <LinearLayout 
     android:id="@+id/course_part" 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:layout_weight="1" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:text="@string/course" 
      android:textSize="@dimen/text_course_title" 
      android:textColor="#ff000000" 
      android:textStyle="bold" /> 

     <ListView 
      android:id="@+id/listview_course" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center"/> 
    </LinearLayout> 

並用於填充的ListView TextView的是:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/list_item_mark_name_name" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:fontFamily="Roboto" 
     android:textAlignment="center" 
     android:text="name" 
     android:textColor="#ff000000" 
     android:textSize="@dimen/text_course_grid" 
     android:textStyle="bold" 
     android:typeface="monospace" 
/> 

而且我要指出,我基於動態改變字體大小在我ArrayAdapter「getView」文本的長度:

// First shrink it's size to better fit. 
    float textSize = 30; // In DP units. 
    int nameLength = mark.name.length(); 
    if (nameLength > 4) 
    { 
     if (nameLength <= 8) 
      textSize *= 4.0f/nameLength; // Up to 8, proportionally shrink it. 
     else 
      textSize *= 0.5f;    // After 8, leave it at half size. 
    } 

    holder.textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize); 
    holder.textView.setMinHeight(this.textViewPixels); 
    holder.textView.setText(mark.name); // Set it's name. 
    holder.textView.setTextColor(appData.getNightMode() ? Color.WHITE : Color.BLACK); // Just added it. Set it's color properly. 

我已經嘗試過gravity =「center」和textAlignme NT =「中心」,他們都表現相同。

我已經嘗試過各種包含視圖/佈局的match_parent和fill_parent的各種組合,通常效果不好,而且如果我不強制寬度,我會得到太多空間或者非常薄的無用列。

謝謝!

+0

嘗試android:gravity =「center_horizo​​ntal」 –

+0

試過了。沒有快樂。 –

回答

0

我發現了一個解決方法:只是將封閉的LinearLayout更改爲RelativeLayout。

爲什麼這個作品是一個很好的問題。聞起來像是圖書館裏的一個錯誤。

所以這裏是我更新的佈局,稍微改變以使標題TextView居中。對ListView中使用的TextView沒有任何改變。

<RelativeLayout 
     android:id="@+id/course_part" 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:layout_weight="1" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/course_course_title" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:text="@string/course" 
      android:gravity="center" 
      android:textSize="@dimen/text_course_title" 
      android:textColor="#ff000000" 
      android:textStyle="bold" /> 

     <ListView 
      android:id="@+id/listview_course" 
      android:layout_below="@id/course_course_title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center"/> 
    </RelativeLayout>