Textview在小屏幕上显示屏幕

时间:2015-02-15 07:22:18

标签: android

我有一个listView,在listView的行中,我有2个TextViews并排。 第一个TextView的layout_width为 180dp ,第二个为 5dp

它在大屏幕上工作正常,但在小屏幕上,文字会在屏幕上显示。 我认为dp本身会在所有屏幕尺寸上正确调整,但事实并非如此。

以下是大屏幕和小屏幕的示例

在较大的屏幕上

这是来自TextView1的消息 来自TextView2的小消息

在小屏幕上

这是一个消息 小消息

如果你观察到这里,小屏幕上缺少最后两个单词来自TextView1 来自TextView2

我希望所有内容都在一行而不滚动。

如何解决这个问题?

请在下面找到我的xml

<TextView
        android:id="@+id/tv1"
        android:layout_width="180dp"
        android:layout_height="wrap_content"            
        android:text=""
        android:textAppearance="?android:attr/textAppearanceSmall" /> 

    <TextView
        android:id="@+id/tv2"
        android:layout_width="5dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/tv1"
        android:layout_toRightOf="@+id/tv1"
        android:layout_alignParentRight="true"
        android:textColor="#ff0000"
        android:gravity="right"
        android:layout_marginRight="5dp"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceSmall" />

2 个答案:

答案 0 :(得分:1)

这不是dp的工作方式。当您的屏幕具有不同的像素密度而不是具有不同的绝对尺寸时,它们非常有用。 屏幕尺寸为960x540像素,具有hdpi密度。这意味着屏幕的总宽度为360dp,因为dp的基准参考是mdpi,hdpi = 1.5 * mdpi。

因此,在这种情况下,如果您将视图定义为400dp宽,它将离开屏幕。

是否可以选择以百分比表示这些宽度?你的例子听起来非常极端,但这里有:

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

  <TextView
    android:id="@+id/tv1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="36"
    android:text=""
    android:textAppearance="?android:attr/textAppearanceSmall" /> 

  <TextView
    android:id="@+id/tv2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:layout_alignBaseline="@+id/tv1"
    android:layout_toRightOf="@+id/tv1"
    android:layout_alignParentRight="true"
    android:textColor="#ff0000"
    android:gravity="right"
    android:layout_marginRight="5dp"
    android:text=""
    android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>

但严重的是,你可以在5dp中使用哪种文本?

答案 1 :(得分:0)

我现在可以通过为不同的屏幕创建不同的样式来解决它。我现在有了值-ldpi,mdpi,hdpi,xhdpi和xxhdpi文件夹,并且在每个文件夹中我都给出了不同的样式,现在即使在较小的屏幕上,UI看起来也更好。