Android 3D Карусель выбрал пункт высота вопроса - PullRequest
0 голосов
/ 07 октября 2019

Я использовал один из примеров для 3D-карусели из 3D-Карусель . Также пробовал эту библиотеку Android-3D-Carousel , но вывод одинаков для обоих.

Проблема в том, что при выборе элемента не используется полная высота (высота переноса вида). Виден только один пиксель высоты. Также не тюк, чтобы получить этот вид в центре.

Текущий выход:

enter image description here

Ожидаетсявывод:

enter image description here

Код, используемый ниже:

Файл адаптера:

public final class MyAdapter
    extends CarouselAdapter<Photo>
{

  public static final class PhotoItem
      extends CarouselItem<Photo>
  {

    private ImageView image;

    private TextView name;

    private Context context;

    public PhotoItem(Context context)
    {
      super(context, R.layout.item);
      this.context = context;
    }

    @Override
    public void extractView(View view)
    {
     // image = (ImageView) view.findViewById(R.id.image);
      //name = (TextView) view.findViewById(R.id.name);
    }

    @Override
    public void update(Photo photo)
    {
//      image.setImageResource(getResources().getIdentifier(photo.image, "drawable", context.getPackageName()));
//      name.setText(photo.name);
    }

  }

  public MyAdapter(Context context, List<Photo> photos)
  {
    super(context, photos);
  }

  @Override
  public CarouselItem<Photo> getCarouselItem(Context context)
  {
    return new PhotoItem(context);
  }

}

Код файла активности:

public final class MainActivity
        extends AppCompatActivity
        implements OnItemClickListener, OnItemLongClickListener {

    private CarouselAdapter adapter;

    private Carousel carousel;

    private final List<Photo> photos = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main_activity);

        carousel = (Carousel) findViewById(R.id.carousel);

        photos.add(new Photo("Photo1", "fotolia_40649376"));
        photos.add(new Photo("Photo2", "fotolia_40973414"));
        photos.add(new Photo("Photo3", "fotolia_48275073"));
        photos.add(new Photo("Photo4", "fotolia_50806609"));

        adapter = new MyAdapter(this, photos);
        carousel.setAdapter(adapter);
        adapter.notifyDataSetChanged();


        carousel.setSelection(0, true);


        carousel.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(CarouselBaseAdapter<?> carouselBaseAdapter, View view, int position, long l) {
                Toast.makeText(getApplicationContext(), "The item '" + position + "' has been clicked", Toast.LENGTH_SHORT).show();
                carousel.scrollToChild(position);
            }
        });

        carousel.setOnItemLongClickListener(new OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(CarouselBaseAdapter<?> carouselBaseAdapter, View view, int position, long id) {
                Toast.makeText(getApplicationContext(), "The item '" + position + "' has been long clicked", Toast.LENGTH_SHORT).show();
                carousel.scrollToChild(position);
                return false;
            }

        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        final MenuItem firstItem = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, R.string.activityStaticFragment);
        firstItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                startActivity(new Intent(getApplicationContext(), SecondaryActivity.class));
                return true;
            }
        });

        final MenuItem secondItem = menu.add(Menu.NONE, Menu.NONE, Menu.NONE, R.string.activityFragment);
        secondItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                startActivity(new Intent(getApplicationContext(), ThirdActivity.class));
                return true;
            }
        });

        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public void onItemClick(CarouselBaseAdapter<?> parent, View view, int position, long id) {
        Toast.makeText(getApplicationContext(), "The item '" + position + "' has been clicked", Toast.LENGTH_SHORT).show();
        carousel.scrollToChild(position);
    }

    @Override
    public boolean onItemLongClick(CarouselBaseAdapter<?> parent, View view, int position, long id) {
        Toast.makeText(getApplicationContext(), "The item '" + position + "' has been long clicked", Toast.LENGTH_SHORT).show();
        carousel.scrollToChild(position);
        return false;
    }

}

Файл макета XML:

<?xml version="1.0" encoding="utf-8"?>
<fr.rolandl.carousel.Carousel xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/carousel"
    android:layout_width="match_parent"
    android:gravity="top" android:paddingTop="-200dp"
    android:layout_height="match_parent"
    android:background="@color/colorYellow"
    android:animationDuration="200" />

Код файла элемента строки:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/llTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="-60dp"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="ACCIDENT"
            android:textColor="@color/colorText"
            android:textSize="@dimen/font_15" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="COMING SOON!"
            android:textColor="@color/colorText"
            android:textSize="@dimen/font_10" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="980"
            android:textColor="@color/colorText"
            android:textSize="@dimen/font_21" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/llMain"
        android:layout_width="wrap_content"
        android:layout_height="@dimen/margin_400"
        android:layout_below="@+id/llTextView"
        android:layout_centerHorizontal="true"
        android:gravity="center_horizontal|bottom"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/ivBox3"
            android:layout_width="@dimen/margin_100"
            android:layout_height="@dimen/margin_50"
            android:contentDescription="@string/app_name"
            android:scaleType="fitXY"
            android:src="@drawable/ic_stack_red_category" />

        <ImageView
            android:id="@+id/ivBox2"
            android:layout_width="@dimen/margin_100"
            android:layout_height="@dimen/margin_50"
            android:layout_marginTop="-80dp"
            android:contentDescription="@string/app_name"
            android:scaleType="fitXY"
            android:src="@drawable/ic_stack_blue_category" />

        <ImageView
            android:id="@+id/ivBox1"
            android:layout_width="@dimen/margin_100"
            android:layout_height="@dimen/margin_50"
            android:layout_marginTop="-80dp"
            android:contentDescription="@string/app_name"
            android:scaleType="fitXY"
            android:src="@drawable/ic_stack_pink_category" />

        <ImageView
            android:id="@+id/lavProductAnimation"
            android:layout_width="@dimen/margin_300"
            android:layout_height="@dimen/margin_220"
            android:layout_marginTop="-260dp"
            android:contentDescription="@string/app_name"
            android:src="@drawable/mascot1" />


    </LinearLayout>

</RelativeLayout>

Пожалуйста, дайте мне знать, если вам нужен какой-либо другой код.

Спасибо!

...