我有一个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" />
答案 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看起来也更好。