首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有CardBuilder.Layout.EMBED_INSIDE的谷歌玻璃浸没式定制布局

没有CardBuilder.Layout.EMBED_INSIDE的谷歌玻璃浸没式定制布局
EN

Stack Overflow用户
提问于 2014-11-20 21:27:06
回答 2查看 847关注 0票数 0

我正试图通过自定义XML布局构建一个沉浸式结构。

我的理解是,如果我使用CardBuilder,我将需要embed_inside,但我想使用整个屏幕与我的XML布局。

这似乎是以前的可能使用卡,但接口已折旧。

我可能只是缺少了一个基本的玻璃概念,但到目前为止,我读到的每个示例或文档都通过CardBuilder.Layout访问并使用预定义的玻璃布局。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-21 16:42:32

如果您喜欢使用您自己的自定义布局,则不需要使用CardBuilder:确保遵循我们的设计指南以确保您符合我们的规范。

要使用您的自定义布局,只需像通常那样膨胀一个View,并在应用程序中使用。

对于Activity,您可以如下所示:

代码语言:javascript
复制
@Override
protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    setContentView(R.layout.my_custom_layout);
}

如果使用的是CardScrollView,只需修改CardScrollAdaptergetView方法以返回View

代码语言:javascript
复制
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // You can inflate the View using a LayoutInflater: 
    //     LayoutInflater.from(mContext).inflate(R.layout.my_custom_layout, parent);
    return mCustomView;
}
票数 2
EN

Stack Overflow用户

发布于 2014-12-05 14:49:19

我自己也有过这个问题,我能够很容易地解决它。它没有太多的文档,这是令人失望的。

由于取消了Card类,并且CardBuilder.EMBED_INSIDE相当有限。正如前面提到的,您唯一的选择是使用自定义视图。但你不需要手动充气!如果使用are,则使用CardScrollView和CardScrollAdapter。您可以在活动中执行以下操作:

代码语言:javascript
复制
private CardScrollView _cardScroller;
private ArrayList<View> _cardsList;
private MyCustomView _myView;
@Override
protected void onCreate(Bundle bundle) {
    _cardsList = new ArrayList<View>();
    _myView= new MyCustomView (this);
    _cardsList.add(_myView);
    _cardScroller = new CardScrollView(this) ;
    MainCardsScrollAdapter adapter = new MainCardsScrollAdapter(_cardsList);
    _cardScroller.setAdapter(adapter);
    _cardScroller.activate();
    setContentView(_cardScroller); 
}

现在我使用了一个自定义CardScrollAdapter,因为它现在有视图而不是CardBuilders:

代码语言:javascript
复制
public class MainCardsScrollAdapter extends CardScrollAdapter
{
    ArrayList<View> _cardsList;
    public MainCardsScrollAdapter(ArrayList<View> cardsList)
    {
        _cardsList = cardsList;
    }

    @Override
    public int getCount() {
        return _cardsList.size();
    }

    @Override
    public Object getItem(int i) {
        return _cardsList.get(i);
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        return _cardsList.get(i);
    }

    @Override
    public int getPosition(Object o) {
        return _cardsList.indexOf(o);
    }

    @Override
    public int getViewTypeCount() {
        return CardBuilder.getViewTypeCount();
    }

    @Override
    public int getItemViewType(int position){
        return 0;//should be changed, it's just an example
    }
} 

现在,只需在xml中创建您想要的布局。并创建自定义视图:公共类MyCustomView扩展FrameLayout{

代码语言:javascript
复制
    public MyCustomView (Context context) {
        super(context);
        initView();
    }

    private void initView()
    {
        View view = inflate(getContext(), R.layout.live_card, null);
        addView(view);
    }
}

您可以添加任意多个自定义视图。我希望它能帮上忙

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27049873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档