视图未在 Android 的相对布局中显示 [重复]

Posted

技术标签:

【中文标题】视图未在 Android 的相对布局中显示 [重复]【英文标题】:View not showing in a relative layout in Android [duplicate] 【发布时间】:2014-06-13 08:50:49 【问题描述】:

我已经发布了这个,但我得到了新的信息,可以帮助你帮助我...... 我对这种布局有疑问,我无法找出问题所在。如您所见,相对布局中有一个计时器和一个表格,但计时器没有显示,甚至没有空格。

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/firstLayout"
android:layout_
android:layout_
>
<Chronometer
    android:id="@+id/chrono"
    android:textColor="#4169E1"
    android:textSize="20sp"
    android:layout_
    android:layout_
    android:layout_centerHorizontal="true"
    android:text="Chronometer"
/>
<TableLayout 
    android:id="@+id/parentLayout"
    android:layout_
    android:layout_
    >
</TableLayout>
</RelativeLayout>

所以我尝试更改计时器和表格布局的顺序。我也尝试更改 layout_width 和 layout_height 属性,但我一无所获。所以我去了我的java课,我发现问题可能在这里:

 private final void createGameBoard(short gridSize) 
  DisplayMetrics metrics = new DisplayMetrics();
  getWindowManager().getDefaultDisplay().getMetrics(metrics);

  TableLayout tableLayout;
  tableLayout = (TableLayout) findViewById(R.id.parentLayout);    
  tableLayout.removeAllViews();

  board = GameBoard.createGameBoard(this, 
        bitmap, 
        tableLayout,
        (int) (metrics.widthPixels * metrics.density),
        (int) ((metrics.heightPixels * metrics.density)-h1),
        gridSize);

GameBoard.createGameBoard 在哪里:

public static GameBoard createGameBoard(Context context, 
                             Bitmap bitmap, 
                             TableLayout parentLayout,
                             int width,
                             int height,
                             short gridSize) 

  board = new GameBoard(context, 
                   bitmap, 
                   parentLayout, 
                   width, 
                   height, 
                   gridSize);

  return board;

所以我猜想显示计时器的问题来自于游戏板的创建,因为从当前窗口获取的指标用于设置游戏板的高度。 有什么建议吗?

【问题讨论】:

您的表格布局正在填充整个 relativeLayout,您将 match_parent 设置为宽度和高度。在 relativeLayout 中,只要您不设置某些参数,视图就会设置在另一个之上。尝试将 android:layout_below="@id/chrono" 设置为 tableLayout。也许您必须从​​ tableLayout 更改宽度和高度参数 【参考方案1】:

您的 xml 代码:

<Chronometer
    android:id="@+id/chrono"
    android:textColor="#4169E1"
    android:textSize="20sp"
    android:layout_
    android:layout_
    android:layout_centerHorizontal="true"
    android:text="Chronometer"
/>
<TableLayout 
    android:id="@+id/parentLayout"
    android:layout_
    android:layout_
>

这将强制 TableLayout 全屏显示,因此 Chronometer 被隐藏。

尝试如下更改:

1.)

<Chronometer
    android:id="@+id/chrono"
    android:textColor="#4169E1"
    android:textSize="20sp"
    android:layout_
    android:layout_
    android:layout_centerHorizontal="true"
    android:text="Chronometer"
/>
<TableLayout 
    android:id="@+id/parentLayout"
    android:layout_
    android:layout_
>

这将包装表格的内容,因此 Chronometer 将获得空间。

2.)

<Chronometer
    android:id="@+id/chrono"
    android:textColor="#4169E1"
    android:textSize="20sp"
    android:layout_
    android:layout_
    android:layout_centerHorizontal="true"
    android:text="Chronometer"
/>
<TableLayout 
    android:id="@+id/parentLayout"
    android:layout_
    android:layout_
    android:layout_below="@id/chrono"
>

这将强制 Chronometer 在表格布局显示后占据表格布局下方的全部空间。

希望这会有所帮助。

【讨论】:

非常感谢,第二个选项终于显示计时器了!!谢谢sss @iversoncru 很高兴有帮助 :) 编码愉快。

以上是关于视图未在 Android 的相对布局中显示 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

视图不显示在相对布局中

ImageView 未在滚动视图内的线性布局中显示

在相对布局下方的相对布局中显示按钮

动画未在自定义布局中显示

如何避免重复的 TextView 代码?

FAB 按钮未在 android studio 布局编辑器中正确显示可绘制对象