1

以下是我的布局的 XML。它明确指出标题、时间和描述 TextView 应位于警报图像下方。但是,如屏幕截图所示,TextViews 已移入ImageView. 为什么会发生这种情况,我该如何解决?当我添加滚动视图时,问题才开始发生。

XML

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
<RelativeLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/img_alarm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/alarm"
        android:layout_centerInParent="true"
        android:contentDescription="@string/content_description_layout_alarm"/>

    <TextView
        android:id="@+id/lbl_alarm_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dip"
        android:textStyle="bold"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/img_alarm"
        android:layout_alignLeft="@+id/img_alarm"
        android:text="@string/empty"
        />   
        <TextView
        android:id="@+id/lbl_alarm_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20dip"
        android:textStyle="bold"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/img_alarm"
        android:layout_alignRight="@+id/img_alarm"
        android:text="@string/empty"
        />  
      <TextView
        android:id="@+id/lbl_alarm_description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/lbl_alarm_title"
        android:layout_alignLeft="@+id/lbl_alarm_title"
        android:layout_alignRight="@+id/lbl_alarm_time"
        android:maxLines="1"
        android:ellipsize="marquee"
        android:text="@string/empty"
        />   

    <Button
        android:id="@+id/btn_stop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/lbl_alarm_description"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="5dip"
        android:paddingLeft="20dip"
        android:paddingRight="20dip"
        android:text="@string/stop_layout_alarm"
        android:gravity="center" />

</RelativeLayout>
</ScrollView>

图片

在此处输入图像描述

4

1 回答 1

2

可爱的应用程序:)

嗯......不知道它为什么这样做,看起来你有正确的代码,没有破坏eclipse。但我也有一些奇怪的相对布局错误,我不明白,也没有时间调试。

我知道另一种方法可以完成你正在寻找的东西 -

有一个包含线性布局而不是相对布局的滚动视图。做这些事情:

  1. 对于线性布局,您可以设置方向 = 垂直,以便它仍然是自上而下的顺序。
  2. 对于需要两个文本视图的部分,其中一个右对齐,另一个右对齐,您需要另一个内部线性布局,其方向=水平。然后让一个元素左对齐父元素,另一个元素右对齐父元素。向这个线性布局添加一个 weightSum=1 属性,并让两个文本视图中的每一个 layout_width=0.5 使每个都是屏幕宽度的一半
  3. 将 weightSum=1 属性应用于最外层的线性布局,并查看内部的每个元素,使其 layout_weight 总和为 1。 layout_weight 将允许元素占据屏幕上那么多的空间。就像如果您将 imageView 设置为 android:layout_weight=0.8 那么它将占据屏幕的 80% ......因为从数学上讲, (layout_weight/weightSum) = (.08/1) = 80%

尝试使用该机制,如果应该工作:) 如果它令人困惑,我可以给出代码示例

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:weightSum="1">

        <ImageView
            android:id="@+id/img_alarm"
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:src="@drawable/alarm"
            android:layout_weight="0.7"
            android:contentDescription="@string/content_description_layout_alarm"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0.1">

            <TextView
                android:id="@+id/lbl_alarm_title"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:textSize="20dip"
                android:textStyle="bold"
                android:text="@string/empty"
                />   
                <TextView
                android:id="@+id/lbl_alarm_time"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:textSize="20dip"
                android:textStyle="bold"
                android:text="@string/empty"
                />  

        </LinearLayout>

          <TextView
            android:id="@+id/lbl_alarm_description"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="0.1"
            android:maxLines="1"
            android:ellipsize="marquee"
            android:text="@string/empty"
            />   

        <Button
            android:id="@+id/btn_stop"
            android:layout_weight="0.1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="5dip"
            android:paddingLeft="20dip"
            android:paddingRight="20dip"
            android:text="@string/stop_layout_alarm"
            android:gravity="center" />

    </LinearLayout>
</ScrollView>

我希望这至少值得为此努力:D

于 2012-11-10T18:00:35.780 回答