我已经在布局文件中创建了一个布局并定义了以下Xml
。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.kirmani.myapplication.MainActivity"
android:orientation="vertical"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@color/colorPrimary"
/>
<ImageView
android:layout_width="match_parent"
android:layout_height="150dp"
android:background="@color/colorPrimaryDark"
/>
<ImageView
android:layout_width="405dp"
android:layout_height="260dp"
android:background="@color/colorAccent"
/>
</LinearLayout>
这样可以在Nexus 4
屏幕中完美填满整个屏幕。但是当我预览所有屏幕时,它会在某些屏幕上给出非常奇怪的外观。
我正在使用DP
,它应该在所有屏幕上保持相同的display
,但它不是那样的。请指导我..
答案 0 :(得分:2)
实际上,dp根据所有屏幕保持相同的显示。这是因为每个设备都不应该在dp中具有相同的宽度。有些设备有480dp,有些设备有360dp等。
如果您希望图像适合您的宽度,则必须使用
<ImageView
android:layout_width="match_parent"
android:layout_height="260dp"
android:background="@color/colorAccent"
/>
不要使用固定的dp。
编辑:
如果你想填充高度,请使用:
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorAccent"
/>
答案 1 :(得分:1)
您的第3张图片视图宽度应与父图片相匹配。喜欢这个
text='really long text string that i want to scroll 15 characters at a time'
canvastext=canvas.create_text(1,1,text=scrolltext(text),
tag=(calmotag,booktag,'texttag'),width=20)
def scrolltext(text):
textlength=15
shorttext=tkinter.StringVar()
shorttext.set(text.get()[0:14])
itemtext=text.get()
if len(itemtext)>textlength:
newindex=0
endindex=newindex+14
while endindex<len(itemtext)+2:
oldtext=shorttext.get()
oldindex=itemtext.index(oldtext)
newindex=oldindex+1
endindex=newindex+14
newtext=itemtext[newindex:endindex]
shorttext.set(newtext)
root.update_idletasks()
root.after(1000)
而不是
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorAccent"
/>
答案 2 :(得分:1)
我们在这里谈论Android ABC。您需要了解其工作原理,而不是寻找具体问题的具体答案,as I already recommend you here。
每个设备在DP中都有特定的维度。 Nexus 4是384x640但是图像中唯一具有这些尺寸的一个。请注意,这并不是“在某些屏幕上看起来很奇怪”,事实上在所有屏幕上看起来并不奇怪,而不是384x640。例如,你的图像中的Nexus One(533dp x 320dp)没有按预期工作,但更难以实现,因为错误在视图之外,但视图比屏幕大。与Nexus S相同。
如果您尝试从边缘到边缘(所有屏幕宽度)获取视图,请使用match_parent。不要在DP中指定大小。
如果您尝试水平或垂直分发视图,请使用特定的ViewGroup和/或权重,或者您可以使用Percent Support Library执行this或this等操作。 Take a look at this tutorial for more
无论如何,这里有你的复制和粘贴代码。
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/colorPrimary" />
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.5"
android:background="@color/colorPrimaryDark"/>
<View
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2.6"
android:background="@color/colorAccent"/>
</LinearLayout>