单击选项不适用于图像,使用<include>命令包含XML代码时

时间:2018-08-31 05:44:11

标签: java android

这是图像的Java代码

package com.example.ananduamenon.kindel3;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

public class ToReader extends Activity {
    ImageView imageView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.book_covers );
        imageView = (ImageView) findViewById( R.id.book_cover51 );
        imageView.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent intent = new Intent( ToReader.this, com.example.ananduamenon.kindel3.Reader.class );
                startActivity( intent );
            }
        } );

    }

}

此活动的XML代码是

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/book_cover51"
    android:layout_width="100dp"
    android:layout_height="160dp"
    android:layout_margin="5dp"
    android:contentDescription="@string/todo"
    android:scaleType="fitXY"
    android:src="@drawable/book_cover"
    tools:ignore="RtlHardcoded,RtlSymmetry"
    tools:context=".ToReader"/>

当ToReader代码以MAIN运行时,此代码有效。

但是当我在主要活动中包含此XML代码时,它就无法工作。

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

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>
    <include layout="@layout/book_covers"/>

</LinearLayout>
</HorizontalScrollView>

点击选项现在不起作用。使用选项添加时添加XML代码时有什么要求。 Java代码根本不在后台运行。

4 个答案:

答案 0 :(得分:0)

当您使用 include 时,基本上是在告诉您所包含的布局是一个模板,然后您将拥有多个模板。因此,模板不能有一个ID,您应该对它的实例使用不同的ID,并从运行时代码中引用它们。有更好的方法可以做到这一点,但这就是为什么您的实际代码不起作用的原因:

<include android:id="@+id/myId1"
         layout="@layout/book_covers"/>
<include android:id="@+id/myId2"
         layout="@layout/book_covers"/>

答案 1 :(得分:0)

如果您的应用需要基于大型数据集(或经常更改的数据)显示元素的滚动列表。 您可以在RecyclerView中水平或垂直显示多个项目。

遵循以下URL:

RecyclerView Example

Show RecyclerView Horizontally

Official Documentation of RecyclerView

答案 2 :(得分:0)

您仅提及了一个ID参考。布局中的多个视图是否有意义?

imageView = (ImageView) findViewById( R.id.book_cover51 );

您将在哪个视图setOnclickListner中混淆Android。我建议为此保留单独的ID

<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/>
<include layout="@layout/book_covers"/> 

喜欢这种方式

<include layout="@layout/book_covers" 
  android:id="@+id/book_cover1"/> 

<include layout="@layout/book_covers" 
  android:id="@+id/book_cover2"/> .... 

答案 3 :(得分:0)

得到答案。包含将不包括Java文件,而仅包含XML代码。所以我在主要活动中而不是在不同的类中编写了代码。然后它起作用了。

每个人都感谢您的支持和建议。