【问题标题】:EditText and Textview not displayed in layoutEditText 和 Textview 未显示在布局中
【发布时间】:2016-04-21 14:48:01
【问题描述】:

嘿 StackOverflow 社区。​​p>

我现在正在开发一个 android 应用程序,但我在片段的布局方面遇到了一些问题。

我的问题是 textviews 和 edittexts 没有显示,它们就像 android studio 的布局设计模式中的挤压。当我在模拟器中运行应用程序时也是如此。我正在使用 relativeLayout 并且重力设置为底部。

我尝试了不同的方法,例如更改重力、relativeLayout 和 textView/editText 的布局高度,但没有任何效果。 这是 XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.project.vincent.activityplanner.InfoPanelActivity"
android:gravity="bottom">

<TextView
    android:id="@+id/textView2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="visible"
    android:background="@color/white"
    android:layout_above="@+id/textView3"
    android:text="test" />

<TextView
    android:id="@+id/textView3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="visible"
    android:background="@color/white"
    android:layout_alignParentStart="true"
    android:layout_above="@+id/dateStart"
    android:text="test" />

<TextView
    android:id="@+id/textView4"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:visibility="visible"
    android:background="@color/white"
    android:layout_alignParentStart="true"
    android:layout_above="@+id/dateStart"
    android:layout_alignBottom="@+id/dateStart"
    android:text="Start" />

<EditText
    android:id="@+id/dateStart"
    android:layout_width="80dp"
    android:layout_height="wrap_content"
    android:inputType="date"
    android:ems="10"
    android:layout_toStartOf="@+id/timeStart"
    android:layout_alignBottom="@+id/timeStart" />

<EditText
    android:id="@+id/timeStart"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:inputType="time"
    android:ems="10"
    android:layout_above="@+id/timeEnd"
    android:layout_alignParentEnd="true" />

<TextView
    android:id="@+id/textView5"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:visibility="visible"
    android:background="@color/white"
    android:layout_alignParentStart="true"
    android:layout_above="@+id/dateEnd"
    android:text="Start" />

<EditText
    android:id="@+id/dateEnd"
    android:layout_width="80dp"
    android:layout_height="wrap_content"
    android:inputType="date"
    android:ems="10"
    android:layout_toStartOf="@+id/timeEnd"
    android:layout_alignBottom="@id/timeEnd"/>

<EditText
    android:id="@+id/timeEnd"
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:inputType="time"
    android:ems="10"
    android:layout_above="@+id/ratingBar"
    android:layout_alignParentEnd="true" />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Save" />

<RatingBar
    android:id="@+id/ratingBar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true" />

</RelativeLayout>

只有保存按钮和评分栏显示正确。

布局结果

布局预期

如果您对如何解决此问题有任何想法,我将非常感谢您的帮助。

谢谢

【问题讨论】:

  • 想要什么结果,附上截图
  • 在这里分享你的模型
  • 我刚刚编辑了我的帖子以添加预期的结果。谢谢
  • @Gnarkk 我只是复制并粘贴了您的 XML 代码,我看到您正在使用相对布局并对布局提供循环依赖。例如,如果您希望评分栏位于底部,请使用 alignParentBottom="true" 并在下方写入相关元素。

标签: android android-layout android-fragments android-studio android-relativelayout


【解决方案1】:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.project.vincent.activityplanner.InfoPanelActivity"
    android:gravity="bottom">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="visible"
        android:layout_above="@+id/textView3"
        android:text="test2" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="visible"
        android:layout_alignParentStart="true"
        android:layout_above="@+id/dateStart"
        android:text="test3" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:visibility="visible"
        android:layout_alignParentStart="true"
        android:layout_above="@+id/dateStart"
        android:layout_alignBottom="@+id/dateStart"
        android:text="Start" />

    <EditText
        android:id="@+id/dateStart"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:inputType="date"
        android:ems="10"
        android:layout_toStartOf="@+id/timeStart"
        android:layout_alignBottom="@+id/timeStart" />

    <EditText
        android:id="@+id/timeStart"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:inputType="time"
        android:ems="10"
        android:layout_above="@+id/timeEnd"
        android:layout_alignParentEnd="true" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:visibility="visible"
        android:text="End" 
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/dateEnd"
        android:layout_above="@+id/ratingBar"/>

    <EditText
        android:id="@+id/dateEnd"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:inputType="date"
        android:ems="10"
        android:layout_toStartOf="@+id/timeEnd"
        android:layout_alignBottom="@id/timeEnd"/>

    <EditText
        android:id="@+id/timeEnd"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:inputType="time"
        android:ems="10"
        android:layout_above="@+id/ratingBar"
        android:layout_alignParentEnd="true" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Save"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"/>

    <RatingBar
        android:id="@+id/ratingBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"/>

</RelativeLayout>

【讨论】:

    【解决方案2】:

    RelativeLayout 允许您“一个接一个地”放置元素。 在设计器中使用元素的“layoutAlignComponent”部分将它们相互粘贴。 我可以看到您已经尝试过使用 android:id="@+id/textView2",因为它有 android:layout_above="@+id/textView3" 字段。

    【讨论】:

      【解决方案3】:

      首先,您必须从父相关布局中删除 android:gravity="bottom" 属性,然后您必须添加以下代码以在底部显示您的保存按钮和评分栏

      <RelativeLayout
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_alignParentBottom="true">
              <Button
                  android:id="@+id/button"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="Save" />
      
              <RatingBar
                  android:id="@+id/ratingBar"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_alignParentEnd="true"
                  android:layout_alignParentRight="true"/>
      
      
          </RelativeLayout>
      

      然后你必须从文本视图中删除白色属性,然后你可以看到你的文本视图并根据你的 UI 对齐它们。

      【讨论】:

        【解决方案4】:

        在线性布局中更改您的父布局。因为 RelativeLayout 是一个视图
        以相对位置显示子视图的组。每个视图的位置可以指定为相对于同级元素(例如相对于另一个视图的左侧或下方)或相对于父 RelativeLayout 区域的位置(例如与底部、左侧或中心对齐)。

        你的屏幕看起来像将父级更改为线性后的样子。

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:orientation="vertical"
        tools:context="com.project.vincent.activityplanner.InfoPanelActivity"
        android:gravity="bottom">
        
        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="visible"
            android:background="@color/white"
            android:layout_above="@+id/textView3"
            android:text="test" />
        
        <TextView
            android:id="@+id/textView3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:visibility="visible"
            android:background="@color/white"
            android:layout_alignParentStart="true"
            android:layout_above="@+id/dateStart"
            android:text="test" />
        
        <TextView
            android:id="@+id/textView4"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:visibility="visible"
            android:background="@color/white"
            android:layout_alignParentStart="true"
            android:layout_above="@+id/dateStart"
            android:layout_alignBottom="@+id/dateStart"
            android:text="Start" />
        
        <EditText
            android:id="@+id/dateStart"
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            android:inputType="date"
            android:ems="10"
            android:layout_toStartOf="@+id/timeStart"
            android:layout_alignBottom="@+id/timeStart" />
        
        <EditText
            android:id="@+id/timeStart"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:inputType="time"
            android:ems="10"
            android:layout_above="@+id/timeEnd"
            android:layout_alignParentEnd="true" />
        
        <TextView
            android:id="@+id/textView5"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:visibility="visible"
            android:background="@color/white"
            android:layout_alignParentStart="true"
            android:layout_above="@+id/dateEnd"
            android:text="Start" />
        
        <EditText
            android:id="@+id/dateEnd"
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            android:inputType="date"
            android:ems="10"
            android:layout_toStartOf="@+id/timeEnd"
            android:layout_alignBottom="@id/timeEnd"/>
        
        <EditText
            android:id="@+id/timeEnd"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:inputType="time"
            android:ems="10"
            android:layout_above="@+id/ratingBar"
            android:layout_alignParentEnd="true" />
        
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Save" />
        
        <RatingBar
            android:id="@+id/ratingBar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true" />
        

        【讨论】:

        • 你的意思是从相对变为线性?
        • 如果您使用的是相对布局,那么您应该为其子视图提供依赖关系。
        • 感谢您的回答,它更接近我想要做的事情。但是我想并排放置一些元素,例如 raatingbar 和保存按钮。我应该在 linearLayout 中使用相对布局(或任何其他布局)来创建具有多个元素的行吗?
        猜你喜欢
        • 1970-01-01
        • 2015-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-07
        • 1970-01-01
        • 2011-12-16
        相关资源
        最近更新 更多