【问题标题】:Android Text in ListView Is Cut OffListView 中的 Android 文本被截断
【发布时间】:2011-12-04 04:20:49
【问题描述】:

我知道论坛上有很多这样的问题,但很多情况都是独一无二的,所以就这样吧。

我有一个自定义列表视图,它根据应用程序主题以不同方式显示“事件”。标题、替代文本和标签的文本都被截断(无论高度设置为多少)。你能帮我解决这个问题吗?

文本在我的 3 个主题中的两个中被截断,并且仅在实际设备上(不是模拟器)。

每个列表项的代码都非常相似,所以我只在下面附上一个(如果需要,会附上其他的);谢谢。

<?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:attr/listPreferredItemHeight -->
<LinearLayout android:id="@+id/viewrow_flags"
    android:orientation="vertical" android:layout_width="36px"
    android:layout_height="80px" android:layout_marginRight="6dip">
</LinearLayout>
<LinearLayout android:orientation="vertical"
    android:layout_width="0dip" android:layout_weight="1"
    android:layout_height="fill_parent">
    <TextView android:id="@+id/viewrow_toptext"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:singleLine="true" android:layout_weight="1" android:gravity="center_vertical"
        android:textColor="#00ccFF" android:textSize="6pt" android:paddingBottom="1dip"/>
    <TextView android:layout_width="fill_parent" android:gravity="center_vertical"
        android:layout_height="fill_parent" android:layout_weight="1"
        android:id="@+id/viewrow_bottomtext" android:textColor="#0066FF"
        android:singleLine="true" android:textSize="6pt" android:paddingBottom="1dip"/>
    <TextView android:layout_width="fill_parent" android:gravity="center_vertical"
        android:layout_height="fill_parent" android:layout_weight="1"
        android:id="@+id/viewrow_tagtext" android:textColor="#0066FF"
        android:singleLine="true" android:textSize="6pt" android:paddingBottom="1dip"/>
</LinearLayout>
<View android:id="@+id/viewrow_anchor" android:layout_width="0sp"
    android:layout_height="60dip" android:layout_gravity="center" />
<TextView android:id="@+id/viewrow_dayview"
    android:layout_width="60sp" android:layout_height="80px"
    android:gravity="center" android:paddingLeft="6dip"
    android:paddingTop="12dip" />
</LinearLayout>

【问题讨论】:

    标签: android listview layout textview android-linearlayout


    【解决方案1】:

    我发现了问题,这是布局重量和整体视图列表项高度的混合。

            <LinearLayout android:orientation="vertical"
                android:layout_width="0dip" 
                android:layout_weight="1"
                android:layout_height="fill_parent">
    -               <TextView android:id="@+id/viewrow_toptext" 
                              android:layout_weight="1"
    +               <TextView android:id="@+id/viewrow_toptext"
                              android:layout_width="fill_parent"                              
                              android:layout_height="fill_parent"
    -                         android:singleLine="true" 
                              android:ellipsize="end" 
                              android:gravity="center_vertical"
    +                         android:singleLine="true" 
                              android:layout_weight="1" 
                              android:gravity="center_vertical"
                              android:textColor="#00ccFF" 
                              android:textSize="6pt" 
                              android:paddingBottom="1dip"/>
    -               <TextView android:layout_width="fill_parent"
    -                         android:ellipsize="end"
    +               <TextView android:layout_width="fill_parent"     
                              android:gravity="center_vertical"
                              android:layout_height="fill_parent" 
                              android:layout_weight="1"
                              android:id="@+id/viewrow_bottomtext" 
                              android:textColor="#0066FF"
                              android:singleLine="true" 
                              android:textSize="6pt" 
                              android:paddingBottom="1dip"/>
    -               <TextView android:layout_width="fill_parent"
    -                         android:ellipsize="end"
    +               <TextView android:layout_width="fill_parent" 
                              android:gravity="center_vertical"
                              android:layout_height="fill_parent" 
                              android:layout_weight="1"
                              android:id="@+id/viewrow_tagtext" 
                              android:textColor="#0066FF"
                              android:singleLine="true" 
                              android:textSize="6pt" 
                              android:paddingBottom="1dip"/>
        </LinearLayout>
                    <View android:id="@+id/viewrow_anchor" 
                          android:layout_width="0sp"
    -                     android:layout_height="70dip" 
                          android:layout_gravity="center" />
    +                     android:layout_height="60dip" 
                          android:layout_gravity="center" />
        <TextView android:id="@+id/viewrow_dayview"
                  android:layout_width="60sp" 
                  android:layout_height="80px"
                  android:gravity="center" 
                  android:paddingLeft="6dip"
    

    【讨论】:

      【解决方案2】:

      您将 TextViews 定义为带有 android:singleLine="true" 的单行。因此,如果文本对于空间来说太大,它将被裁剪。要么设置 TextViews 以允许文本的换行和扩展它们的高度,要么你可以使用 android:ellipsize="marquee" 属性在单行上显示文本。

      【讨论】:

      • 这两个变量有什么区别?我在 android 文档上查找了它,它说 ellipsize 通常与 android:singleLine 一起使用。
      • 是的,椭圆是单行的。将裁剪带结束点或对于 android:ellipsize="marquee" 将像选取框一样从左到右滚动文本。如果您有房间,请使用多线。更好的用户界面
      • 设置此属性并没有解决问题 - 我猜它与文本视图及其布局高度/权重有关。
      • marquee 不会滚动我视图中的文本(可能是因为它是动态填充的),但至少我能够摆脱这 3 个点和倒数第二个单词的结尾。跨度>
      【解决方案3】:

      给被删帖的人加android:layout_weight="1"

      【讨论】:

      • 我想我尝试为三个文本视图赋予相同的 layout_weight,但它们在我的实际设备上仍然被切断。我稍后会确认。
      • 我尝试将所有内部文本视图设置为具有相同的权重,但这并没有解决问题。
      【解决方案4】:

      只需将 layout_height="fill_parent" 线性更改为 wrap_content

      <LinearLayout android:orientation="vertical"
          android:layout_width="0dip" android:layout_weight="1"
          android:layout_height="fill_parent">
          <TextView android:id="@+id/viewrow_toptext"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-12
        • 1970-01-01
        相关资源
        最近更新 更多