在textview上填写父级不适用

时间:2013-05-24 12:06:33

标签: android relativelayout fill-parent

我知道这个问题已被多次询问,但是我已经查看了我能看到的所有解决方案,但没有一个能够工作。 我在相对布局中有一个textview。 textview有一个高度:fill_parent属性不起作用。双关语是他们在这个相对布局中是几个其他textview,除了这个之外,所有这些都设法填充父级。 这是XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/customshape"
    android:orientation="horizontal" >
    <TextView
        android:id="@+id/mainlistdescription"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:scrollHorizontally="true"
        android:maxLines="4"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/mainlistquantite"
        android:layout_gravity="center_vertical"
        android:textSize="12sp"
        android:padding="10dp"
         />
<TextView
        android:id="@+id/mainlistquantite"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:maxLines="4"
        android:layout_toLeftOf="@+id/consultaffichelayoutdroit"
        android:textSize="12sp"
        android:padding="10dp"
         />
<TextView
        android:id="@+id/consultafficheseparator" <!-- the one not working-->
        android:layout_width="2dp"
        android:layout_height="fill_parent"
        android:layout_toLeftOf="@+id/imageView1"
        android:background="#777777"
        android:maxWidth="2dp" />
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="15dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:gravity="center_vertical|right"
        android:src="@drawable/fleche" /> 
    <LinearLayout
        android:id="@+id/consultaffichelayoutdroit"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_toLeftOf="@+id/consultafficheseparator"
        android:orientation="vertical"
        android:paddingLeft="5dp"
         >
        <TextView
            android:id="@+id/mainlistnumero"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_gravity="right"
            android:layout_marginRight="10dp"
            android:layout_weight="1"
            android:textSize="12sp"
            android:textStyle="bold" />
        <TextView
            android:id="@+id/mainlistprix"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_gravity="right"
            android:layout_marginRight="10dp"
            android:layout_weight="1" />
    </LinearLayout>
</RelativeLayout>

这是我得到的:enter image description here

灰色栏应该一直运行,但在模拟器上实际运行时却没有(它在eclipse工具中运行)

因为这个xml实际上是在列表视图中调用的,所以我似乎无法使用JAVA代码解决问题,所以理想情况下解决方案应该在XML文件上。我尝试了到目前为止android:clipChildren =“false”没有成功,以及改变我的元素在XML中的顺序,这让juste变得更糟。

经过实验,我可以说没有什么可以取而代之的,所以它不是它不能去,因为那里已经有了一个视图,它只是没有扩展那么远

感谢你的帮助

7 个答案:

答案 0 :(得分:2)

为什么使用TextView绘制分隔符?尝试使用常规视图,如下面的代码。

此外,如果分隔符必须与描述视图的底部对齐,则可以使用layout_alignBottom - RelativeLayout的属性,如下所示:

android:layout_alignBottom="@+id/mainlistdescription"

所以分隔符看起来像下面的代码:

<View
     android:id="@+id/consultafficheseparator"
     android:layout_width="2dp"
     android:layout_height="match_parent"
     android:layout_toLeftOf="@+id/imageView1"
     android:layout_alignBottom="@+id/mainlistdescription"
     android:background="@color/separator_bg" />

以下一些提示:

  1. 最好在某个资源文件(例如colors.xml)中定义颜色,并从布局中引用该颜色。特别是在ListView

    中使用它时
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="separator_bg">#777777</color>
    </resources>
    

    在您的布局文件android:background="@color/separator_bg"

  2. 使用match_parent代替fill_parent,因为已弃用。

  3. 我在其中一个android:scrollHorizontally="true"上看到了TextView。仅在TextView可编辑时才有效。如果您希望内容滚动,因为它不适合TextView,请尝试使用以下代码:

    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    

    在您的adapter.getView()

    final TextView description = (TextView) view.findViewById(R.id.mainlistdescription);
    description.setSelected(true);
    

答案 1 :(得分:1)

看起来您的TextView不在顶层,也许您可​​以在代码中尝试以下内容:

consultafficheseparatorTextView.bringToFront();

答案 2 :(得分:0)

顺便说一句那个讨厌的问题是没有意义的。最终对我有用的是将RelativeLayout标记中的android:layout_height更改为fill_parent,就像这样

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:background="@drawable/customshape"
    android:orientation="horizontal">

希望这会有所帮助

答案 3 :(得分:0)

尝试设置以下一项(或全部)以查看它是否发生了任何变化:

android:maxHeight="100dp"

android:layout_height="100dp"

android:text="a"
android:textColor="#777777"

如果这些选项中的任何一个改变了尺寸,请告诉我们,我们可以找到合适的解决方案!

答案 4 :(得分:0)

你得到这种布局的视图是非常奇怪的,因为在复制和粘贴你的布局代码后我得到了这个。

你的解决方案有效,我做了一些小改进。它就像你的代码一样,但是如果你只需要背景颜色就不需要使用TextView,可以使用View。

<View
     android:id="@+id/consultafficheseparator"
     android:layout_width="2dp"
     android:layout_height="match_parent"
     android:layout_toLeftOf="@+id/imageView1"
     android:background="#777777"
/>

唯一的建议是设置根布局高度“match_parent”或dp中的某个值,例如 thiagolr 。我为此屏幕截图设置为“100dp”。

screenshot

答案 5 :(得分:0)

这是你应该做的,

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/customshape"
android:orientation="horizontal" >
<TextView
    android:id="@+id/mainlistdescription"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:scrollHorizontally="true"
    android:maxLines="4"
    android:layout_alignParentLeft="true"
    android:layout_toLeftOf="@+id/mainlistquantite"
    android:layout_gravity="center_vertical"
    android:textSize="12sp"
    android:padding="10dp"
     />
<TextView
    android:id="@+id/mainlistquantite"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:maxLines="4"
    android:layout_toLeftOf="@+id/consultaffichelayoutdroit"
    android:textSize="12sp"
    android:padding="10dp"
     />

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="15dp"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:gravity="center_vertical|right"
    android:src="@drawable/fleche" /> 
<TextView
    android:id="@+id/consultafficheseparator" <!-- this will work now -->
    android:layout_width="2dp"
    android:layout_height="fill_parent"
    android:layout_toLeftOf="@+id/imageView1"
    android:background="#777777"
    android:maxWidth="2dp" />
<LinearLayout
    android:id="@+id/consultaffichelayoutdroit"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_toLeftOf="@+id/consultafficheseparator"
    android:orientation="vertical"
    android:paddingLeft="5dp"
     >
    <TextView
        android:id="@+id/mainlistnumero"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_gravity="right"
        android:layout_marginRight="10dp"
        android:layout_weight="1"
        android:textSize="12sp"
        android:textStyle="bold" />
    <TextView
        android:id="@+id/mainlistprix"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_gravity="right"
        android:layout_marginRight="10dp"
        android:layout_weight="1" />
</LinearLayout>
</RelativeLayout>

答案 6 :(得分:0)

1)尝试使“线性布局”方向垂直 要么 2)尝试使相对布局方向垂直

它可以提供帮助。