2012-04-05 38 views
0

我目前正在嘗試學習Android。現在一直在閱讀教程和手冊。 我被困在佈局問題。橢圓大小不工作在這張表佈局

我從網頁中刪除內容並將其顯示給用戶。這是我的應用程序的工作。

我的佈局如下:

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" android:padding="5px"> 

<TextView 
    android:id="@+id/tvOutput" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" /> 

<ScrollView 
    android:id="@+id/scrollView1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" android:layout_marginTop="5dp"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <TableLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:stretchColumns="0" android:id="@+id/tblOutput"> 

      <TableRow 
       android:id="@+id/tableRow1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow3" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow4" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow5" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow6" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow7" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow8" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow9" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow10" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow11" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 
      </TableRow> 

     </TableLayout> 

     <Button 
      android:id="@+id/btnBack" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/lblBack" android:layout_marginTop="10dip"/> 


     <Button 
      android:id="@+id/btnSendSMS" 
      android:layout_width="80dp" 
      android:layout_height="wrap_content" 
      android:text="@string/lblSendSMS" /> 

    </LinearLayout> 

</ScrollView> 

通過代碼,我會通過TableRows循環,並添加每兩個TextViews。下面是一個示例一塊吧:

   for(i=1;i<=11;i++){ 
        TextView tv1 = new TextView(getApplicationContext()); 
        TextView tv2 = new TextView(getApplicationContext()); 

        //get values and store it in strValue1 & strValue2 
        //.... 

        tv1.setText(strValue1); //a long text 
        tv2.setText(strValue2); //would always be a 3 letter value 
        //tv1.setEllipsize(TruncateAt.MARQUEE); 
        //tv1.setMarqueeRepeatLimit(1); 
        tv1.setSingleLine(true); 
        tv1.setEllipsize(TruncateAt.END); 
        tv1.setGravity(Gravity.LEFT); 


        tr = (TableRow) findViewById(getResources().getIdentifier("tableRow"+i, "id", getPackageName())); 
        tr.addView(tv1); 
        tr.addView(tv2); 
       } 

的問題是,setEllipsize()對每個的TableRow第一的TextView沒有做任何事情。它只顯示第一個TextView的文本(長文本溢出寬度),TextView2甚至不顯示。

當我嘗試setEllipsize()和setSingleLine()在一個現有的TextView(我的佈局中的第一個TextView - 你可以從上面的XML,這是在表格佈局上面)看到,它工作正常。

任何想法,我哪裏出錯了?或者有什麼建議?

感謝提前:)

回答

0

您需要設置一個固定的高度與可能的路徑的任意一個TextView的。設置行數或設置TextView佈局的高度。如果你不這樣做,因爲文本視圖具有wrap_content作爲高度,它將調整大小並顯示所有文本。

所以首先解決的TextView的大小,然後setellipsize()

+0

謝謝:)我試圖使用'設定的TextView的最大線setMaxLines(1)'。但這不起作用。我會嘗試將'Layout_Height'設置爲'fill_parent'。爲此我必須創建一個TableLayout參數並將規則添加到它? – 2012-04-06 02:37:42

+0

也玩寬度。在包裝內容中,在寬度根據內容而變化的情況下,可以看到這個問題。 – Shubhayu 2012-04-06 04:33:44

+0

我曾嘗試將fill_parent設置爲所有TextViews的父項。但那沒有奏效。現在試圖玩寬度。要爲駐留在TableRow(位於TableLayout中)的TextView設置佈局參數(FILL_PARENT),是否必須創建TableLayout的對象並將其傳遞給TextView的setLayoutParams? – 2012-04-08 06:13:52