Android - 正在发生但未显示的视图

Posted

技术标签:

【中文标题】Android - 正在发生但未显示的视图【英文标题】:Android - A View taking place but doesn't show up 【发布时间】:2013-09-23 22:31:52 【问题描述】:

这是 XML:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:background="@android:color/transparent" >

    <LinearLayout 
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/weightLossIndicator"
        android:paddingLeft="15dp"
        android:paddingRight="10dp"
        android:orientation="vertical">

        <TextView 
            android:id="@+id/weightValueTextView"
            android:layout_
            android:layout_
            android:paddingTop="10dp"
            android:textColor="@android:color/black"
            android:textSize="30sp"
            android:textStyle="normal" />

        <TextView 
            android:id="@+id/weightDateTextView"
            android:layout_
            android:layout_
            android:textColor="@android:color/black"
            android:textSize="20sp" />

        <TextView 
            android:id="@+id/weightDifferenceTextView"
            android:layout_
            android:layout_
            android:paddingBottom="10dp"
            android:textColor="@android:color/black"
            android:textSize="20sp" />

    </LinearLayout>

    <ImageView 
        android:id="@+id/weightLossIndicator"
        android:layout_
        android:layout_
        android:layout_alignParentRight="true"
        android:background="@color/change_green"/>

    <View 
        android:id="@+id/separator"
        android:layout_
        android:layout_
        android:layout_alignParentBottom="true"
        android:layout_below="@+id/weightLossIndicator"
        android:layout_marginLeft="15dp"
        android:background="@color/dark_blue" />


</RelativeLayout>

视图weightLossIndicator 不会出现在设备和模拟器上,尽管它会影响布局上的其他元素(它们的位置)。背景颜色是不透明的,并且确实出现在图形布局中。

更新: 我尝试将 ImageView 的固定高度设置为 40 dp,然后猜猜看,它出现了!使用match_parent 有问题,但我不知道是什么。我也不得不说,我使用这个 XML 作为ListView 行布局。

【问题讨论】:

父布局是什么布局?请发布完整的 XML 文件。理想情况下,您可以为 LinearLAyout 分配一个 Id,并在 weightLossIndicator 视图中提及 android:layout_below 这个相邻的线性布局。 您是否将当前的 XML 封装在 RelativeLayout 中? @WordPressDeveloper 是的。 从您的 separator 中删除 android:layout_below="@+id/weightLossIndicator"。添加到weightLossIndicator这个属性:android:layout_above="@+id/separator" @SherifelKhatib 也不起作用。刚试过。 【参考方案1】:

<View
    android:id="@+id/separator"
    android:layout_
    android:layout_
    android:layout_alignParentBottom="true"
    android:background="@color/dark_blue" />

<ImageView
    android:id="@+id/weightLossIndicator"
    android:layout_
    android:layout_
    android:layout_above="@+id/separator"
    android:layout_alignParentRight="true"
    android:background="@color/change_green" />

<LinearLayout
    android:layout_
    android:layout_
    android:layout_above="@+id/separator"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_toLeftOf="@+id/weightLossIndicator"
    android:orientation="vertical"
    android:paddingLeft="15dp"
    android:paddingRight="10dp" >

    <TextView
        android:id="@+id/weightValueTextView"
        android:layout_
        android:layout_
        android:paddingTop="10dp"
        android:textColor="@android:color/black"
        android:textSize="30sp"
        android:textStyle="normal" />

    <TextView
        android:id="@+id/weightDateTextView"
        android:layout_
        android:layout_
        android:textColor="@android:color/black"
        android:textSize="20sp" />

    <TextView
        android:id="@+id/weightDifferenceTextView"
        android:layout_
        android:layout_
        android:paddingBottom="10dp"
        android:textColor="@android:color/black"
        android:textSize="20sp" />
</LinearLayout>

【讨论】:

粘贴到相对布局中它可以工作:)。请在图表中提供确切的布局要求 只是我们的好奇,它比我的 XML 有什么不同? 引用已更改【参考方案2】:

你应该使用

<LinearLayout 
    android:layout_
    android:layout_
    android:layout_alignParentLeft="true"
    android:layout_toLeftOf="@+id/weightLossIndicator"
    android:paddingLeft="15dp"
    android:paddingRight="10dp"
    android:orientation="vertical">

    <TextView 
        android:id="@+id/weightValueTextView"
        android:text="valueText"
        android:layout_
        android:layout_
        android:paddingTop="10dp"
        android:textColor="@android:color/black"
        android:textSize="30sp"
        android:textStyle="normal" />

    <TextView 
        android:id="@+id/weightDateTextView"
        android:text="dateText"
        android:layout_
        android:layout_
        android:textColor="@android:color/black"
        android:textSize="20sp" />

    <TextView 
        android:id="@+id/weightDifferenceTextView"
        android:text="differencetext"
        android:layout_
        android:layout_
        android:paddingBottom="10dp"
        android:textColor="@android:color/black"
        android:textSize="20sp" />

</LinearLayout>

<ImageView 
    android:id="@+id/weightLossIndicator"
    android:layout_
    android:layout_
    android:layout_alignParentRight="true"
    android:layout_marginBottom="3dp"
    android:background="#00FF00"/>

<View 
    android:id="@+id/separator"
    android:layout_
    android:layout_
    android:layout_alignParentBottom="true"
    android:layout_marginLeft="15dp"
    android:background="#0000FF" />

【讨论】:

谢谢,我的问题没有直接关系,但您的回答帮助了我。只有我的前两个控件出现了——我开始认为其他控件被渲染到屏幕外,但无法证明这一点。无论如何,我的主布局上缺少 android:orientation="vertical" 。我在你的例子中看到了这一点。添加后,一切都显示出来了。再次感谢。【参考方案3】:

尝试将您的 WeightLossIndicator LinearLayout 的 LayoutWeight 分配给 android:layout_weight="1"

编辑:

实际上,我注意到你有一个兄弟视图。取决于您想要如何布局视图(可能是 50%/%50),然后您可以同时应用线性布局和 ImageView 以使用 android:layout_weight="1"

再次编辑

如 cmets 所示,这种情况仅适用于包含在 LinearLayout 中的子布局。

【讨论】:

我相信如果父布局是LinearLayout而不是相对布局是有效的【参考方案4】:

我一定遗漏了一些明显的东西,只需复制并粘贴您的 xml,将文本分配给 TextViews,并确认出现 weightValueTextView。你期待的结果是这样的吗? (忽略颜色,我硬编码了它的值)

我猜您正在以编程方式设置适当的文本值;来自Activity 的 sn-p 会很有用,以防万一您不小心做了不应该做的其他事情。

【讨论】:

嗯,这正是我想要的。还是行不通。但是你会在 ListView 中使用它吗?【参考方案5】:
// try this
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_
              android:layout_
              android:background="@android:color/transparent">
    <LinearLayout
            android:layout_
            android:layout_
            android:layout_weight="1"
            android:paddingLeft="15dp"
            android:paddingRight="10dp"
            android:orientation="vertical">

        <TextView
                android:id="@+id/weightValueTextView"
                android:layout_
                android:layout_
                android:paddingTop="10dp"
                android:textColor="@android:color/black"
                android:textSize="30sp"
                android:textStyle="normal" />

        <TextView
                android:id="@+id/weightDateTextView"
                android:layout_
                android:layout_
                android:textColor="@android:color/black"
                android:textSize="20sp" />

        <TextView
                android:id="@+id/weightDifferenceTextView"
                android:layout_
                android:layout_
                android:paddingBottom="10dp"
                android:textColor="@android:color/black"
                android:textSize="20sp" />

    </LinearLayout>

    <LinearLayout
            android:layout_
            android:layout_
            android:layout_marginLeft="15dp"
            android:orientation="vertical">
        <ImageView
                android:id="@+id/weightLossIndicator"
                android:layout_
                android:layout_
                android:layout_weight="1"
                android:background="@color/change_green"/>
        <View
                android:id="@+id/separator"
                android:layout_
                android:layout_
                android:background="@color/change_green" />

    </LinearLayout>

</LinearLayout>

【讨论】:

好吧,分隔符不会占据整个宽度。实际上,建议不要将子视图宽度设置为 match_parent 而其父宽度为 wrap_content。【参考方案6】:

我会先尝试使用带有大显示屏的不同 avd。 setvisible true 这个属性在代码中设置为 false 吗?相对布局很棘手,一旦你使用其他设备让它看起来不错,它很可能不会像你想要的那样显示。还有 android:src ="@drawable/mypic" 并确保你在可绘制文件夹中有一张图片

【讨论】:

【参考方案7】:

根据布局文件(BTW错过了容器布局),我看到你想要实现这个:

AB AB 交流

其中 A 是 LinearLayout(没有 id),B 是 weightLossIndicator,C 是分隔符。

这对吗?

如果是这样,你应该将C设置为右下对齐,并将B放在它上面,然后才决定如何处理A。

另外,如果 B 仍然无法占用空间,请尝试改用 ImageView。

【讨论】:

以上是关于Android - 正在发生但未显示的视图的主要内容,如果未能解决你的问题,请参考以下文章

ko 视图模型在 js 上更新但未在 html 视图中显示

MVC 部分视图已更新,但未在主视图中显示

Java/Android:如何在不切断边缘视图的情况下显示一系列图像视图?

选择器视图在选择器视图中显示数字但未在标签上正确显示?

pushViewController 为导航栏设置动画,但未显示新视图 [关闭]

Textview drawable 不在远程视图中显示可绘制图像