可见和不可见的布局

时间:2012-04-10 01:26:38

标签: android android-layout

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

基本上我有我的xml相对布局。在中心(垂直和horizenatlly)。我想根据一些用户输入显示“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>

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

这样好吗?如果不是你有什么建议吗?

3 个答案:

答案 0 :(得分:3)

您需要的是View.GONEView.VISIBLE

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

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

答案 1 :(得分:2)

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

  1. 将每个块放在单独的xml中,然后使用include
  2. 制作2个视图,然后使用ViewFlipper根据用户要求翻转它们。
  3. 但是对于你的简单要求,我认为你做得很好。

    include选项可以像这样工作,

    layout_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>
    

    layout_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时。

答案 2 :(得分:0)

第一个选项是:

您可以在Linearlayout中添加所有三个按钮或文本视图,并使用android:layout_centerInParent将其置于父级中。

第二个选项是:

您可以将中间按钮置于所有三个按钮的中间位置,并使用相应的中间按钮调整其他两个按钮。我们也应该对textview重复这一点。在此选项中,我们应该明确地将所有三个视图都显示为View.GONE