2013-08-23 108 views
2

當應用程序多於一行時,我的文本被截斷。它只發生在hdpi或更少的手機上。任何幫助都會很棒。文字被切斷。 Android

代碼:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
       android:background="@drawable/backgroundp" > 


<com.example.app.ObservableScrollView 
    android:id="@+id/scroll_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <View 
      android:id="@+id/placeholder" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/sticky_height" /> 

     <ScrollView 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" > 

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

       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal" 
        android:paddingTop="10dip" > 
       </LinearLayout> 

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

        <TextView 
         android:layout_width="0dp" 
         android:layout_height="wrap_content" 
         android:layout_weight="1" 
         android:gravity="center" 
         android:text="Man what you doing that for. Come on" 
         android:textSize="20sp" /> 

        <Button 
         android:id="@+id/button02" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Play" /> 
       </LinearLayout> 

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

        <TextView 
         android:layout_width="0dp" 
         android:layout_height="wrap_content" 
         android:layout_weight="1" 
         android:gravity="center" 
         android:text="Come on Man. Just Stop, no need for that." 
         android:textSize="20sp" /> 

        <Button 
         android:id="@+id/button03" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Play" /> 
       </LinearLayout> 

       Lots of the same thing over and over again. 

      Then 


     </LinearLayout> 
      </LinearLayout> 
     </ScrollView> 
    </LinearLayout> 
</com.example.app.ObservableScrollView> 

<Button 
    android:id="@+id/button01" 
    style="@style/Item.Sticky" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Stop" 
    android:paddingLeft="10dp" 
      android:paddingRight="10dp" 
        android:paddingTop="10dp"/> 

      </FrameLayout> 

下,但是這是你真的需要看到我想即使世界更多的東西。如果佈局高度是包裝內容不應該沒問題。我猜測這是文字大小,但不確定?

+0

您能否確認它是否僅與本機窗口小部件發生,即沒有ObservableScrollView?如果是這樣,你可以發佈整個佈局 - 在實際的編輯器中調試會更容易。 – ataulm

+0

不確定,但我已經添加了其餘的代碼。 – user2407147

+0

我的意思是說,減少你的佈局,直到它工作/直到你有一個可管理的佈局來解決這個問題。過度的嵌套佈局會導致低端設備出現問題。它看起來好像你的自定義ScrollView中有一個ScrollView? – ataulm

回答

2

以下是接受的答案。

我認爲「真實」的答案是LinearLayoutbaselineAligned屬性默認爲true。這意味着它會讓孩子與他們定義的「基線」一致。對於TextViews,這是第一行文本的底部,這解釋了爲什麼只有當您有多行文本時纔會顯示問題。

所以,你可以設置android:baselineAligned="false"對保存TextViewButtonLinearLayout

請參閱這篇文章的baselineAligned財產概述:TechoTalkative article by Paresh Mayani


你可以使用一個RelativeLayout的代替與重量屬性(其降解是考慮用於測量視圖邊界所需的多遍的性能),使許多嵌套LinearLayouts的。

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="Come on Man. Just Stop, no need for that." 
     android:textSize="20sp" 
     android:layout_alignParentLeft="true" 
     /> 

    <Button 
     android:id="@+id/button03" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:text="Play"/> 

</RelativeLayout> 

這在我的測試中沒有得到剪切文本。

+0

這不是一個答案,只是建議我們都知道的替代方案。 – rzaaeeff

+0

@rzaaeeff如果你有類似的問題,但這個問題的答案沒有幫助,你可以在這裏鏈接到你的問題,我會稍後看看。 – ataulm

+0

@rzaaeeff更新了「真實」的答案^ _^ – ataulm

3

像這樣的LinearLayout使用填充..

<LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:padding="10dp" 
      android:orientation="horizontal" > 

      <TextView 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:text="Man what you doing that for. Come on" 
       android:textSize="20sp" /> 

      <Button 
       android:id="@+id/button02" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Play" /> 
     </LinearLayout> 

或使用這樣的TextView保證金...

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

      <TextView 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:layout_margin="10dp" 
       android:text="Man what you doing that for. Come on" 
       android:textSize="20sp" /> 

      <Button 
       android:id="@+id/button02" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Play" /> 
     </LinearLayout> 
+0

填充不起作用,但邊距不過,但使按鈕有點不符合文本。想想解決它的方法嗎? – user2407147

+0

嘗試按鈕也一樣。 – Hariharan

+0

嗯,填充不起作用。我還可以做些什麼? –

1

取決於你想做什麼,你可以打破它分成兩線或橢圓化它。

到ellipsize,添加到XML

android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:gravity="center" 
    android:text="Come on Man. Just Stop, no need for that." 

    android:ellipsize="end" 
    android:paddingRight="10dp" 

    android:textSize="20sp" /> 

闖入拖行。將singleLine設置爲false。

橢圓化最好通過xml來完成,對於單行來說並不重要。

+0

這不會讓按鈕變小嗎? – user2407147

+0

我想把它分成兩行。如果你能告訴我這樣做會是多麼的棒! – user2407147

+0

關於非常感謝,現在試試:) – user2407147

0

我有同樣的問題。偏偏,我用:

android:layout_gravity="center" 

不要使用。用途:

android:gravity="center" 

代替。

一些幫助:

android:layout_gravity是視圖的外部重力。這意味着,指定視圖應觸摸其父邊界的方向。

android:引力是該視圖的內部引力。這意味着它的內容應該與哪個方向對齊。