繁体   English   中英

Android-从res / drawable onClick显示图像

[英]Android - Show image from res/drawable onClick

首先,我想说我一直在论坛上寻求答案,但发现与我想要的不匹配。 基本上,我想要的是:当用户单击.xml文件中先前“指定”的图像之一时,新的图像显示在屏幕的中心,而不是.xml文件中的“指定”。 我写了“指定的”原因idk,如果它是引用此问题的正确方法。

编辑:没有必要事先不指定图像,我所需要的只是为可见性设置“消失”。 这段代码正好按照我想要的方式工作(男):

Main.java

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;

public class Principal extends Activity {
    ImageView cuia1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_principal);
        cuia1 = (ImageView) findViewById(R.id.cuia1);
        cuia1.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                ImageView cuia1grande = (ImageView) findViewById(R.id.cuia1grande);
                cuia1grande.setVisibility(1);
            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.principal, menu);
        return true;
    }
}

activity.xml

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

<TableLayout
    android:id="@+id/tableLayout1"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:shrinkColumns="*"  
    android:stretchColumns="*">   

    <TableRow   
        android:id="@+id/tabelaCuias"  
        android:layout_height="wrap_content"  
        android:layout_width="match_parent"  
        android:gravity="center">    

        <TextView  
            android:id="@+id/selecionaCuia"  
            android:text="Selecione a cuia"  
            android:textStyle="bold">            
        </TextView>  

        <ImageView  
            android:id="@+id/cuia1"  
            android:src="@drawable/cuia1">            
        </ImageView>  

        <ImageView  
            android:id="@+id/cuia2"  
            android:src="@drawable/cuia2">            
        </ImageView>  

        <ImageView  
            android:id="@+id/cuia3"  
            android:src="@drawable/cuia3">            
        </ImageView>  

        <ImageView  
            android:id="@+id/cuia4"  
            android:src="@drawable/cuia4">            
        </ImageView>                         
    </TableRow>  
</TableLayout>

<ImageView  
    android:layout_height="wrap_content"  
    android:layout_width="match_parent"
    android:layout_centerInParent="true"
    android:visibility="gone"
    android:id="@+id/cuia1grande"  
    android:src="@drawable/cuia1grande">            
</ImageView>

您有什么理由不想在布局文件中“指定”图像? 您可以将其放置在此处而不显示( visibilty="gone" ),然后在您认为合适时显示/隐藏它。

这是我要做的:

  1. 将您的布​​局设为RelativeLayout而不是TableLayout (这将使在中心显示图像更加容易)

  2. 将您的TableLayout放在包装的RelativeLayout

  3. ImageView定义为包装的RelativeLayout的最后一个子级,设置centerInParent="true"visibilty="gone"

  4. 在您的onClick方法中,只需将其visibility设置为visible

如果您确实不想在布局中定义ImageView ,则可以通过编程方式创建它:

  1. 遵循与之前相同的步骤1-2

  2. 在代码中捕获对包装的RelativeLayout的引用

  3. onClick方法中,以编程方式创建ImageView ,并通过代码指定centerInParent="true" (如果您想要有关如何执行此操作的示例,请告诉我,我将用代码示例编辑答案)。

  4. 通过myRelativeLayout.addView(myImageView);将新视图添加到RelativeLayout myRelativeLayout.addView(myImageView);

希望这可以帮助 :)

public class Principal extends Activity {
    ImageView cuia1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_principal);
        cuia1 = (ImageView) findViewById(R.id.cuia1);
        //set invisible
        cuia1 .setVisibility(View.INVISIBLE);
        cuia1.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                //show image on the center of screen  
                //set image
                cuia1.setImageResource(R.drawable.cuia1);
                // set visible
                cuia1 .setVisibility(View.VISIBLE);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {     
        getMenuInflater().inflate(R.menu.principal, menu);
        return true;
    }
}

import import android.view.View;

加油!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM