为什么ImageView在布局中不可见?

时间:2016-07-06 08:33:45

标签: android

我想通过编程使图像在布局中显示为VISIBLE。

这是 XML文件,我将图像声明为GONE,然后通过代码使其可见:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/map"
    tools:context="dis2.widget.MainActivity">

    <HorizontalScrollView
        android:layout_width="fill_parent"
        android:layout_height="80dp"
        android:id="@+id/contactsScrollView"
        android:fillViewport="false"
        android:visibility="visible"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="26dp">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="gone">

            <ImageView
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:src="@drawable/linkg"
                android:id="@+id/linkgID" 
                android:visibility="gone"/>

        </LinearLayout>
    </HorizontalScrollView>

</RelativeLayout>

这是MainActivity Java文件

private greenBeeper g;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ImageView b = (ImageView) findViewById(R.id.linkgID);
    b.setVisibility(View.VISIBLE);
}

5 个答案:

答案 0 :(得分:3)

您已在xml中使LinearLayout以及ImageView 消失。在java中,您只能使图像可见,而您的imageView父级仍然处于消失状态。这是您的代码中的问题。 给你的线性布局赋予一些id,并在你希望你的imageview可见时让它可见

答案 1 :(得分:1)

您的LinearLayout声明为gone

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

        <ImageView
            android:id="@+id/linkgID"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:src="@drawable/linkg"
            android:visibility="gone"/>

    </LinearLayout>

尝试从android:visibility="gone"中删除LinearLayout,并使用其余的Java代码。

答案 2 :(得分:1)

试试这个,     在你的xml中,可以看到LinearLayout&#34;可见&#34;而不是&#34;走了&#34;你可以在你的布局中看到imageview。

 <LinearLayout
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="visible">

        <ImageView
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:src="@drawable/linkg"
            android:id="@+id/linkgID" 
            android:visibility="gone"/>

    </LinearLayout>

我希望你用这个来解决你的问题.. !!

答案 3 :(得分:1)

启用线性布局和图像视图可见性。

 <LinearLayout
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="visible">
        <ImageView
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:src="@drawable/board_out_icon"
            android:id="@+id/linkgID"
            android:visibility="visible"/>

    </LinearLayout>

答案 4 :(得分:-1)

private greenBeeper g;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    LinearLayout layout = (LinearLayout) findViewById(R.id.layout);
    ImageView b = (ImageView) findViewById(R.id.linkgID);
    b.setVisibility(View.VISIBLE);
    layout.setVisibility(View.VISIBLE);
}

将{id}赋予LinearLayout