4

当超过一行时,我的文字在应用程序中被截断。它只发生在 hdpi 或更少的手机上。任何帮助都会很棒。

代码:

 <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>

下面还有更多的东西,但我猜这是你真正需要看到的。如果布局高度是换行内容不应该没问题。我猜是文字大小,但不确定?

4

4 回答 4

3

像这样对线性布局使用填充..

<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>

或者像这样使用文本视图的边距......

<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>
于 2013-08-23T09:32:48.020 回答
3

以下是公认的答案。

我认为“真正的”答案是默认情况下LinearLayout具有baselineAligned属性true。这意味着它将使其子项与他们定义的“基线”保持一致。对于TextViews,这是第一行文本的底部,这解释了为什么只有当您有多行文本时才会出现问题。

因此,您可以android:baselineAligned="false"LinearLayout持有TextView和 的 设置Button

baselineAligned有关该属性的概述,请参阅此文章: Paresh Mayani 的 TechoTalkative 文章


您可以使用 RelativeLayout 而不是如此多的带有 weight 属性的嵌套 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>

这在我的测试中没有得到剪辑文本。

于 2013-08-23T11:05:10.880 回答
1

根据您想要做什么,您可以将其分成两行,或将其椭圆化。

椭圆,添加到该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" />

闯入牵引线。将单行设置为假。

省略号最好通过 xml 完成,对于单行来说没关系。

于 2013-08-23T09:32:57.237 回答
0

我遇到过同样的问题。碰巧我正在使用:

android:layout_gravity="center"

不要用那个。利用:

android:gravity="center"

反而。

一些帮助:

android:layout_gravity 是视图的外部重力。这意味着,要指定 View 应该触摸它的父边框的方向。

android:gravity 是该视图的内部重力。这意味着,它的内容应该在哪个方向对齐。

于 2015-04-02T17:37:45.090 回答