如何从 XML Android 开发中选择要显示的内容 [重复]

Posted

技术标签:

【中文标题】如何从 XML Android 开发中选择要显示的内容 [重复]【英文标题】:How to choose what to display from XML Android Development [duplicate] 【发布时间】:2016-08-03 21:17:01 【问题描述】:

我的 android 项目目前有这个 XML 布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
tools:context="bhavik.slidingmenu.activity.LogFragment">
<ScrollView
    android:layout_
    android:layout_>
    <LinearLayout
        android:layout_
        android:layout_
        android:orientation="vertical" >

        <RelativeLayout
            android:id="@+id/relLayout1"
            android:layout_marginTop="20dp"
            android:layout_marginBottom="20dp"
            android:layout_
            android:layout_>

            <com.rockerhieu.emojicon.EmojiconTextView
                android:id="@+id/txtEmojicon1"
                android:text="\ue11b"
                android:layout_
                android:layout_
                android:textSize="45dp"
                android:textIsSelectable="true"
                android:layout_centerVertical="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_marginLeft="35dp"
                android:layout_marginStart="20dp" />

            <SeekBar
                android:layout_
                android:layout_
                android:id="@+id/seekBar1"
                android:max="10"
                android:progress="0"
                android:layout_alignTop="@+id/txtEmojicon1"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_marginTop="8dp"
                android:layout_marginLeft="90dp"
                android:layout_marginRight="75dp" />

        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/relLayout2"
            android:layout_marginTop="20dp"
            android:layout_marginBottom="20dp"
            android:layout_
            android:layout_>

            <com.rockerhieu.emojicon.EmojiconTextView
                android:id="@+id/txtEmojicon2"
                android:text="\ue11b"
                android:layout_
                android:layout_
                android:textSize="45dp"
                android:textIsSelectable="true"
                android:layout_centerVertical="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_marginLeft="35dp"
                android:layout_marginStart="20dp" />

            <SeekBar
                android:layout_
                android:layout_
                android:id="@+id/seekBar2"
                android:max="10"
                android:progress="0"
                android:layout_alignTop="@+id/txtEmojicon2"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_marginTop="8dp"
                android:layout_marginLeft="90dp"
                android:layout_marginRight="75dp" />

        </RelativeLayout>
    </LinearLayout>
</ScrollView>

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_
    android:layout_
    android:src="@drawable/fab_ic_add"
    android:layout_alignParentRight="true"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="@dimen/fab_button_margin_bottom"
    android:layout_marginRight="@dimen/fab_button_margin_right"
    app:elevation="6dp"
    app:pressedTranslationZ="12dp"
    app:borderWidth="0dp"/>
</RelativeLayout>

正如您在代码中看到的,我有 2 个相对布局,分别称为 relLayout1 和 relLayout2。假设根据条件,我只想显示 relLayout1 而不是 relLayout2,我该怎么做?还是反过来?

【问题讨论】:

【参考方案1】:
in your Activity
RelativeLayout relLayout1 = (RelativeLayout) findViewById(R.id.relLayout1);
RelativeLayout relLayout2 = (RelativeLayout) findViewById(R.id.relLayout2);
    if (condition == true)
        relLayout1.setVisibility(View.VISIBLE);
    else
        relLayout2.setVisibility(View.VISIBLE);
    
and in your xml
<RelativeLayout
        android:id="@+id/relLayout1"
        android:visibility="gone"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:layout_
        android:layout_>
<RelativeLayout
        android:id="@+id/relLayout2"
        android:visibility="gone"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:layout_
        android:layout_> 

【讨论】:

完美运行。非常感谢! 如果有帮助请采纳答案:D【参考方案2】:

您需要根据条件set view visibility,假设您需要在特定条件下显示RelativeView1,否则需要显示RelativeView2。

if(condition) 
  relView1.setVisibility(View.VISIBLE);
  relView2.setVisibility(View.GONE);

else 
  relView2.setVisibility(View.VISIBLE);
  relView1.setVisibility(View.GONE);

【讨论】:

完美运行。非常感谢!【参考方案3】:

如果您想隐藏某些内容,您可以将可见性属性设置为不可见或消失。

在 xml 中应该是 android:visibility="invisible"

以编程方式它将是 myView.setVisibility(View.INVISIBLE);

【讨论】:

谢谢!让它工作!

以上是关于如何从 XML Android 开发中选择要显示的内容 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 2 个数据库表中选择要显示

在一个活动中选择要在另一个活动中播放的声音

如何在 Flutter Web 中选择要上传的文件夹/文件夹?

如何在 PHP 中选择要与 PDO 一起使用的 MySQL 数据库?

转:Android工具类库

ACTION_GET_CONTENT意图不显示外部存储