0

我需要您对我的设计提出建议,如果您有更好的想法(或者您同意我的观点),那就太好了。出于某种原因,我觉得这是一种“石器时代的编程风格”,但让我们看看。

基本上我有我的 xml 相对布局。在中心(垂直和水平)。我想根据某些用户输入显示“任一”3 个按钮或 3 个文本。所以我做的是以下内容:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clipChildren="false"
    android:clipToPadding="false" >

    <RelativeLayout android:id="@+id/Buttons"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" >
        <Button1 .../>
        <Button2 .../>
        <Button3 .../>
    </RelativeLayout>

    <RelativeLayout android:id="@+id/Texts"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" >
       <TextView1 .../>
       <TextView2.../>
       <TextView3.../>
    </RelativeLayout>

</RelativeLayout>

根据代码中的用户输入,我将可见性设置为可见或不可见

这可以吗?如果不是,你有什么建议?

4

3 回答 3

3

您需要的是View.GONEView.VISIBLE

使用 View.GONE - 布局不占用任何空间(几乎就像它根本不存在一样)。如果您使用 View.INVISIBLE,对用户来说,视图(按钮或文本)将不可见,但它们仍会出现在屏幕上,从而向上移动另一个视图(按钮或文本)或向下(视图不会处于死点)。

提示:您可以使用 'android:layout_centerInParent' 而不是 'android:layout_centerHorizo​​ntal' 和 'android:layout_centerVertical'。

于 2012-04-10T01:38:04.837 回答
2

在我看来,您所做的可能很原始,但很简单,这很好:) 但是如果您仍然想要一些选择并使生活变得复杂,那么

  1. 将每个块放在单独的 xml 中并使用include.
  2. 制作 2 个视图,然后根据用户要求使用 ViewFlipper 翻转它们。

但是对于您的简单要求,我认为您做得很好。

include 选项会像这样工作,

布局_1.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/Buttons"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" >
        <Button1 .../>
        <Button2 .../>
        <Button3 .../>
</RelativeLayout>

布局_2.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/Texts"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" >
       <TextView1 .../>
       <TextView2.../>
       <TextView3.../>
</RelativeLayout>

你的 main_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clipChildren="false"
    android:clipToPadding="false" >

    <include layout="@layout/layout_1" />
    <include layout="@layout/layout_2" />   

</RelativeLayout>

include可以帮助您制作可重用的布局,还有助于保持您的 xml 文件不成比例地增长,特别是当您有复杂的 UI 时。

于 2012-04-10T01:37:04.010 回答
0

第一个选项是:

您可以在 Linearlayout 中添加所有三个按钮或文本视图,并使用android:layout_centerInParent.

第二种选择是:

您可以将所有三个按钮中的中间按钮居中,并分别调整其他两个按钮到中间按钮。同样,我们也应该对 textviews 重复此操作。在这个选项中,我们应该View.GONE明确地使所有三个视图可见。

于 2012-04-10T01:53:45.323 回答