2012-11-07 98 views
0

我得到的問題是,當我點擊下面的xml中顯示的按鈕之一,按鈕上的文本跳下來一行。所以如果按鈕是1行,則不顯示文本。如果按鈕是2行,則只顯示第一行,位於按鈕的按鈕中。Android按鈕文本移動

onClick方法中的任何內容都不會更改佈局。

繼承人的XML

<?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:id="@+id/layout_main"> 


    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" > 

.. a few other layouts and controls that works fine 



     <TableLayout 
       android:id="@+id/tableLayout276" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 

       <TableRow 
        android:id="@+id/TableRow10" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_gravity="left" 
        android:gravity="center" 
        android:orientation="vertical" > 



        <Button 
         android:id="@+id/BtnRet" 
         android:layout_width="120dp" 
         android:layout_height="wrap_content" 
         android:text="Ret" 
         android:gravity="center" 
         android:textSize="18dp" />  

        <Button 
         android:id="@+id/BtnVisningsType" 
         android:layout_width="120dp" 
         android:layout_height="wrap_content" 
         android:text="Decimaltal" 
         android:gravity="center" 
         android:textSize="18dp" /> 

        <Button 
         android:id="@+id/BtnFunktioner" 
         android:layout_width="120dp" 
         android:layout_height="wrap_content" 
         android:text="Funktioner" 
         android:gravity="center" 
         android:textSize="18dp" />  
      </TableRow> 
     </TableLayout> 

.. a few other layouts and controls that works fine 


</LinearLayout> 
</ScrollView> 
</LinearLayout> 

現在,如果我改變按鈕上的layout_width爲wrap_content,這一切工作正常(接到When changing textview, the text on a button below the textview moves down. Help!的想法) - 除了按鈕現在obviusly不具有相同的寬度,它看起來很凌亂。

有沒有人有任何想法爲什麼會發生這種情況,以及我如何保持文本,並決定按鈕的大小?

回答

2

這增加了佈局的複雜性,但可能是一個解決方案。

將LinearLayout添加到您的表格行,並使用權重來控制按鈕的精確佈局。事情是這樣的:

<TableRow 
       android:id="@+id/TableRow10" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_gravity="left" 
       android:gravity="center" 
       android:orientation="vertical" > 

    <LinearLayout android:layout_height="match_parent" 
        android:layout_width="match_parent" 
        android:weightSum="3" 
        android:orientation="horizantal"/> 

       <Button 
        android:id="@+id/BtnRet" 
        android:layout_weight="1" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:text="Ret" 
        android:gravity="center" 
        android:textSize="18dp" />  

       <Button 
        android:id="@+id/BtnVisningsType" 
        android:layout_weight="1" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:text="Decimaltal" 
        android:gravity="center" 
        android:textSize="18dp" /> 

       <Button 
        android:id="@+id/BtnFunktioner" 
        android:layout_weight="1" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:text="Funktioner" 
        android:gravity="center" 
        android:textSize="18dp" />  

    </LinearLayout> 

</TableRow> 

注意事項:

  • 可能會給性能命中
  • 從內存類型的,請原諒任何錯字
  • 沒有測試
  • 使用填充/保證金調整精確上漿

RelativeLayout migh噸也工作。

+0

完全同意這一點。您想嘗試並避免硬編碼的視圖尺寸,例如android:layout_width =「120dp」 –

+0

我對此有幾個問題。第一:你的建議是一個線性佈局,在tableview裏面已經有了嗎?如果線條「weigthsum」的線性佈局可以將按鈕調整爲彼此相鄰而不是下 - 不會破壞tablelayout的點嗎? – user1285334

+0

第二:如果我使用填充/邊距來調整按鈕的大小,將不會改變按鈕的大小,如果我改變它的文字?我希望按鈕的尺寸與其他尺寸相同,並且無論發生什麼情況,都要保持這種尺寸。 (當然,如果文字變長了,它會變成wrap_content高度的第二行,但那很好。) – user1285334