2

我知道这个问题已被多次问过,但我已经查看了我能看到的所有解决方案,但没有一个有效。我在相对布局中有一个文本视图。textview 有一个 height : fill_parent 属性不起作用。双关语是它们是这个相对布局中的其他几个文本视图,除了这个之外,它们都设法填充父级。这是 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>

这是我得到的:在此处输入图像描述

灰色条应该一直走,但在模拟器上实际运行时不会(它在 eclipse 工具中)

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

实验后,我可以说什么都没有,所以不是它不能去,因为那里已经有风景了,只是没有扩大那么远

感谢您的帮助

4

7 回答 7

3

为什么要使用 TextView 来绘制分隔符?尝试像下面的代码这样的普通视图。

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

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);
    
于 2013-06-04T14:37:33.777 回答
1

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

consultafficheseparatorTextView.bringToFront();
于 2013-05-24T17:06:31.617 回答
0

尝试设置以下一项(或全部)以查看它是否会改变任何内容:

android:maxHeight="100dp"

或者

android:layout_height="100dp"

或者

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

如果这些选项中的任何一个更改了大小,请告诉我,我们可以制定适当的解决方案!

于 2013-05-29T02:32:31.230 回答
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”。

截屏

于 2013-05-29T21:38:23.490 回答
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>
于 2013-05-31T21:08:52.313 回答
0

有同样令人讨厌的问题,顺便说一句没有意义。最后对我有用的是将android:layout_heightRelativeLayout标签中的标签更改为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">

希望这可以帮助

于 2013-05-25T08:45:41.357 回答
0

1)尝试使您的线性布局方向垂直或 2)尝试使您的相对布局方向垂直

它可以提供帮助。

于 2013-06-04T06:37:24.220 回答