安卓的onclick不工作 [英] Android: onclick not working

查看:177
本文介绍了安卓的onclick不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在做我的应用程序一个ImageAdapter,我想TextView的下面的图片上点击是隐藏的。但setInvisibility无法正常工作。萨尔瓦多的问题是没有任何工程与信息。是否与景观的问题...我需要帮助,请

XML

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:layout_width =match_parent
机器人:layout_height =match_parent>< imagenes.TouchImageView
    机器人:ID =@ + ID / imgDisplay
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:scaleType =fitCenter/><的TextView
    机器人:ID =@ + ID / textoInfoImagen
    机器人:layout_alignParentBottom =真
    机器人:layout_width =match_parent
    机器人:layout_height =WRAP_CONTENT
    机器人:重力=CENTER_HORIZONTAL
    机器人:背景=@彩色/ grisTransparente
    机器人:paddingTop =3DP
    机器人:paddingBottom会=3DP
    机器人:文字=
    机器人:TEXTSIZE =13SP
    机器人:文字颜色=@彩色/灰皮诺/>< / RelativeLayout的>

JAVA

 公共类FullScreenImageAdapter扩展PagerAdapter实现OnClickListener {私人活动_activity;
私人LayoutInflater吹气;
上下文语境;的String [] listaImagenes;
串纪念碑;TouchImageView imgDisplay;
TextView的信息;布尔无形= FALSE;公共FullScreenImageAdapter(活动活动,上下文的背景下,字符串纪念碑)抛出IOException
    this._activity =活动;
    this.context =背景;
    this.monumento =摩奴;
    listaImagenes = context.getAssets()列表(this.monumento)。
}@覆盖
公众诠释的getCount(){
    返回listaImagenes.length;
}@覆盖
公共布尔isViewFromObject(查看视图,Object对象){
    返回查看==((RelativeLayout的)对象);
}@覆盖
公共对象instantiateItem(ViewGroup中的容器,INT位置){    吹气=(LayoutInflater)_activity
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    最后查看viewLayout = inflater.inflate(R.layout.ampliar_imagen,集装箱,
            假);    imgDisplay =(TouchImageView)viewLayout.findViewById(R.id.imgDisplay);
    imgDisplay.setMaxZoom(4);    位图位图= cargarImagen(纪念碑,位置);
    imgDisplay.setImageBitmap(位图);    信息=(TextView中)viewLayout.findViewById(R.id.textoInfoImagen);
    info.setText((位置+ 1)+德+ listaImagenes.length +
            \\ n+ InfoImagenes.devolverInfoImagenes(纪念碑,位置));    imgDisplay.setOnClickListener(新View.OnClickListener(){
        公共无效的onClick(视图v){            Toast.makeText(背景下,点击,Toast.LENGTH_SHORT).show();
            如果(隐形==真){
                无形= FALSE;
                info.setVisibility(View.VISIBLE);
            }其他{
                无形= TRUE;
                info.setVisibility(View.INVISIBLE);
            }
        }
    });    ((ViewPager)容器).addView(viewLayout);    返回viewLayout;
}@覆盖
公共无效destroyItem(ViewGroup中的容器,INT位置,Object对象){
    ((ViewPager)容器).removeView((RelativeLayout的)对象);}公共位图cargarImagen(字符串纪念碑,INT位置){    位图位图= NULL;
    InputStream为;    尝试{
        BitmapFactory.Options选项=新BitmapFactory.Options();
        options.in preferredConfig = Bitmap.Config.ARGB_8888;            是= context.getAssets()开(摩奴+/+ listaImagenes [位置]);
            位= BitmapFactory.de codeStream(是,空,期权);    }赶上(IOException异常五){    }    返回位图;
}@覆盖
公共无效的onClick(视图v){
}}


解决方案

使用的ImageView 的(imgDisplay)键入的.java 的ImageView 而不是 TouchImageView

I'm doing in my app a ImageAdapter and i want that click on the image below the textview is hidden. But setInvisibility not work. El problem is nothing works with info. Is there a problem with views ... I need help please

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<imagenes.TouchImageView
    android:id="@+id/imgDisplay"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="fitCenter" />

<TextView 
    android:id="@+id/textoInfoImagen"
    android:layout_alignParentBottom="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:background="@color/grisTransparente"
    android:paddingTop="3dp"
    android:paddingBottom="3dp"
    android:text=""
    android:textSize="13sp"
    android:textColor="@color/gris"/>

</RelativeLayout>

JAVA

public class FullScreenImageAdapter extends PagerAdapter implements OnClickListener {

private Activity _activity;
private LayoutInflater inflater;
Context context;

String[] listaImagenes;
String monumento;

TouchImageView imgDisplay;
TextView info;

boolean invisible = false;

public FullScreenImageAdapter(Activity activity, Context context, String monumento) throws IOException {
    this._activity = activity;
    this.context = context;
    this.monumento = monumento;
    listaImagenes = context.getAssets().list(this.monumento);
}

@Override
public int getCount() {
    return listaImagenes.length;
}

@Override
public boolean isViewFromObject(View view, Object object) {
    return view == ((RelativeLayout) object);
}

@Override
public Object instantiateItem(ViewGroup container, int position) {

    inflater = (LayoutInflater) _activity
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    final View viewLayout = inflater.inflate(R.layout.ampliar_imagen, container,
            false);

    imgDisplay = (TouchImageView) viewLayout.findViewById(R.id.imgDisplay);
    imgDisplay.setMaxZoom(4);

    Bitmap bitmap = cargarImagen(monumento, position);
    imgDisplay.setImageBitmap(bitmap);

    info = (TextView) viewLayout.findViewById(R.id.textoInfoImagen);
    info.setText((position + 1) + " de " + listaImagenes.length +
            "\n" + InfoImagenes.devolverInfoImagenes(monumento, position));

    imgDisplay.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            Toast.makeText(context, "click", Toast.LENGTH_SHORT).show();
            if(invisible == true) {
                invisible = false;
                info.setVisibility(View.VISIBLE);
            } else {
                invisible = true;
                info.setVisibility(View.INVISIBLE);
            }
        }
    });

    ((ViewPager) container).addView(viewLayout);

    return viewLayout;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    ((ViewPager) container).removeView((RelativeLayout) object);

}

public Bitmap cargarImagen(String monumento, int position) {

    Bitmap bitmap = null;
    InputStream is;

    try {
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;

            is = context.getAssets().open(monumento + "/" + listaImagenes[position]);
            bitmap = BitmapFactory.decodeStream(is, null, options);

    } catch (IOException e) {

    }

    return bitmap;
}

@Override
public void onClick(View v) {
}

}

解决方案

Use ImageView's (imgDisplay) type in .java class as ImageView instead of TouchImageView

这篇关于安卓的onclick不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆