使用图像视图在 PageRow 元素之间导航

Posted

技术标签:

【中文标题】使用图像视图在 PageRow 元素之间导航【英文标题】:Navigate between PageRow elements with image view 【发布时间】:2017-08-03 04:45:48 【问题描述】:

我想将图像添加到标题元素。我遵循this 教程并成功添加了图像。它使用ListRow 元素并且与ListRow 完美配合。

但是,当我将 ListRow 元素更改为 PageRow 时,它不会在标题之间导航。以下是一些重要的变化。可能是什么原因?

IconHeaderItemPresenter.java

@Override
public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object o) 
    IconHeaderItem iconHeaderItem = (IconHeaderItem)((PageRow)o).getHeaderItem();
    View rootView = viewHolder.view;
...

MainFragment.java

public void createRows()

    IconHeaderItem headerItem1 = new IconHeaderItem(1, getString(R.string.header_history), R.drawable.header_images);
    PageRow pageRow1 = new PageRow(headerItem1);
    mRowsAdapter.add(pageRow1);

    IconHeaderItem headerItem2 = new IconHeaderItem(2, getString(R.string.header_recommendations), R.drawable.header_musics);
    PageRow pageRow2 = new PageRow(headerItem2);
    mRowsAdapter.add(pageRow2);

    IconHeaderItem headerItem3 = new IconHeaderItem(3, getString(R.string.header_news), R.drawable.header_videos);
    PageRow pageRow3 = new PageRow(headerItem3);
    mRowsAdapter.add(pageRow3);

    IconHeaderItem headerItem4 = new IconHeaderItem(4, getString(R.string.header_notifications), R.drawable.header_settings);
    PageRow pageRow4 = new PageRow(headerItem4);
    mRowsAdapter.add(pageRow4);


private static class PageRowFragmentFactory extends BrowseFragment.FragmentFactory 
    private final BackgroundManager mBackgroundManager;

    PageRowFragmentFactory(BackgroundManager backgroundManager) 
        this.mBackgroundManager = backgroundManager;
    

    @Override
    public Fragment createFragment(Object rowObj) 
        Row row = (Row)rowObj;
        mBackgroundManager.setDrawable(null);
        //id for news fragment
        if (row.getHeaderItem().getId() == 3) 
            return new SampleFragmentA();
         else 
            return new SampleFragmentB();
        

    

【问题讨论】:

【参考方案1】:

添加这两行

view.setFocusable(true);
view.setFocusableInTouchMode(true);

到你扩展的 RowHeaderPresenter 的 onCreateViewHolder

【讨论】:

【参考方案2】:

view.setFocusable(true); 添加到扩展的 RowHeaderPresenter 的 onCreateViewHolder

【讨论】:

以上是关于使用图像视图在 PageRow 元素之间导航的主要内容,如果未能解决你的问题,请参考以下文章

防止自定义 UINavigationBar 元素在视图之间更改

导航组件共享元素转换适用于输入,但不适用于弹回

Xamarin Forms ListView 元素被禁用

切换导航栏以外的视图时,您可以防止元素移动吗?

ViewController - (0,0) 处的主视图元素被导航栏遮挡

如何从主干中的另一个视图绑定元素上的事件