LinearLayout有4张图片 - 我看不到他们的洞

时间:2011-11-21 19:21:20

标签: android

我有一个线性布局,有4个水平方向的图像。我的问题是第一张图片被剪裁了,我无法在我的银河系中看到它们,只能在一些模拟器中看到它们。请帮忙吗?这是我的线性布局代码:

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



        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:background="@drawable/header_new_3"   
            android:layout_weight="1"
                 />  


        <ImageButton   
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:background="@drawable/header_btn1"                          
               />  

        <ImageButton        
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:background="@drawable/header_btn2"                   

            />

        <ImageButton  
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:background="@drawable/header_btn3"                           

            />
    </LinearLayout> 

这就是我想要的enter image description here

这就是我得到的enter image description here

@Jamo:image1:

enter image description here

image2,3,4:

enter image description here

3 个答案:

答案 0 :(得分:0)

您的包含布局为fill_parent,这意味着它仅限于其父级的宽度(可能是整个屏幕)。每个ImageButton都设置为宽度wrap_content,这意味着它只适合其内容的宽度。如果您使用的图像背景的宽度总和超过总父宽度,那么您将遇到问题。这似乎正在发生的事情。你不能在屏幕上放入比你拥有的像素更多的像素。

<强>更新

使用您提供的图形,“hello”图像为138px,星形为60px。 138 + 60 * 3 = 318.如果你的屏幕是480px宽(我认为Galaxy S是480宽)那么你应该能够适应。如果你将这些放入默认或mdpi文件夹(并且Galaxy S是hdpi),那么这些将被缩放到1.5x,即477px。这应该还是适合的。

答案 1 :(得分:0)

我知道创建类似内容的唯一方法是使用RelativeLayout,如下所示:

<RelativeLayout android:layout_height="wrap_content"
    android:layout_width="fill_parent">
    <ImageView android:layout_alignParentRight="true"
        android:id="@+id/iv4" 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content" 
        android:src="@drawable/icon"/>
    <ImageView android:layout_toLeftOf="@id/iv4" 
        android:id="@+id/iv3"
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"
        android:src="@drawable/icon"/>
    <ImageView android:layout_toLeftOf="@id/iv3" 
        android:id="@+id/iv2"
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"
        android:src="@drawable/icon"/>
    <ImageView android:layout_toLeftOf="@id/iv2" 
        android:id="@+id/iv1"
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent"
        android:src="@drawable/icon"/>
</RelativeLayout>

答案 2 :(得分:0)

我们在上一个问题中聊过这个。请发布整个布局文件。如果总宽度受外部LinearLayout的父级约束,layout_weight将不会像其他帖子中暗示的那样做很多。

还有一些想法。

您有ImageView高度的“fill_parent”。我认为那些应该是“wrap_content”。你用'背景'而不是'src'设置图像,这有点奇怪。

此外,第一张图片应该在另一个布局容器中,以允许伸展不会搞砸'你好'。

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


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
        android:layout_weight="1">
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/header_new_3"   
            android:layout_gravity="center"
             />  
    </LinearLayout>

并非100%确定这正是您想要的,但最终目标是拉伸第一张图片而不会以任何方式剪切它。