Android设置可见性不起作用

时间:2015-10-12 07:38:56

标签: android xml visibility

如果电话价值通过意图传递到活动,我的TextView内有ImageLinearLayout,那么我设置包含广告的布局的可见性文字和图像可见。

在我的代码中,布局显示,但文本和图像即使在设置可见的相同检查中设置为可见也不会。我添加了我的xml和Java代码,用于在我的代码中设置可见性。

if(extras.getString("phone") != null){
    Log.d("PHONE VISIBLE", "phone made clayout visible");
    contactsLayout.setVisibility(View.VISIBLE);
    phoneLayout.setVisibility(View.VISIBLE);
    mPhone = extras.getString("phone");
    Log.d("places got phone", mPhone.toString());
    phone.setText(mPhone);
}

这是我的xml代码

<LinearLayout
    android:id="@+id/contactsLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="gone"
    android:layout_below="@+id/summary"
    android:orientation="horizontal">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/contactsLabel"
        android:background="@color/gray"
        android:paddingLeft="16dp"
        android:text="contact"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/phoneLayout"
        android:orientation="horizontal"
        android:visibility="gone">

        <ImageView
            android:id="@+id/phoneImage"
            android:src="@drawable/icon_phone"
            android:layout_width="60dp"
            android:layout_height="60dp"/>

        <TextView
            android:id="@+id/phoneNumber"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="16dp"
            tools:text="phoneNumber"/>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/emailLayout"
        android:paddingLeft="16dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:visibility="gone">

        <ImageView
            android:id="@+id/emailImage"
            android:src="@drawable/icon_email"
            android:layout_width="60dp"
            android:layout_height="60dp" />

        <TextView
            android:id="@+id/email"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            tools:text="email"/>
    </LinearLayout>
</LinearLayout>

3 个答案:

答案 0 :(得分:1)

正如迈克所说

按如下方式更改contactsLabel:

TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/contactsLabel"
        android:background="@color/gray"
        android:paddingLeft="16dp"
        android:text="contact"/>

答案 1 :(得分:0)

将您的contactsLayout方向更改为vertical,然后您就可以看到phonelayout。

答案 2 :(得分:0)

替换你的xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <LinearLayout
        android:id="@+id/contactsLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="gone"
        android:layout_below="@+id/summary"
        android:orientation="vertical"
        >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/contactsLabel"
            android:background="#F4F3F3"
            android:paddingLeft="16dp"
            android:text="contact"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/phoneLayout"
            android:orientation="horizontal"
            android:visibility="gone">

            <ImageView
                android:id="@+id/phoneImage"
                android:src="@drawable/ic_launcher"
                android:layout_width="60dp"
                android:layout_height="60dp"/>

            <TextView
                android:id="@+id/phoneNumber"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingTop="16dp"
                tools:text="phoneNumber"/>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/emailLayout"
            android:paddingLeft="16dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:visibility="gone">

            <ImageView
                android:id="@+id/emailImage"
                android:src="@drawable/ic_launcher"
                android:layout_width="60dp"
                android:layout_height="60dp" />

            <TextView
                android:id="@+id/email"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                tools:text="email"/>
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

确保您已设置手机的“手机”容器可见

if(getIntent().getExtras() != null)
{
      contactsLayout.setVisibility(View.VISIBLE);
      phoneLayout.setVisibility(View.VISIBLE);
      mPhone = extras.getString("phone");
      phone.setText(mPhone);
}