簡體   English   中英

Google Glass全屏自定義布局卡

[英]Google Glass Fullscreen Custom Layout Cards

我有一個問題。 由於不推薦使用Card類,並且CardBuilder.EMBED_INSIDE受到相當的限制。 唯一的選擇是使用自定義視圖。 我還想使用CardScrollView和CardScrollAdapter。

訪問沒有CardBuilder.Layout.EMBED_INSIDE的Google Glass沉浸式自定義布局

但是我的問題是,我不能有多個視圖。

這是MyCustomViewClass:

   public class MyCustomView extends FrameLayout{
public MyCustomView (Context context) {
    super(context);
    initView();
}

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

    View view2 = inflate(getContext(), R.layout.secondview, null);
    addView(view2);
}

那就是我的主要活動課:

public class InspectionActivity extends Activity {

private CardScrollView mCardScroller;
private GestureDetector mGestureDetector;
private View mView;
private CardScrollView _cardScroller;
private ArrayList<View> _cardsList;
private MyCustomView _myView;
protected List<CardBuilder> mCards;
@Override

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    createCards();
    _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);
}

private void createCards() {
    mCards = new ArrayList<CardBuilder>();
}
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 2;//should be changed, it's just an example
    }
} }

好的,所以從您的帖子中我猜測這只是將您的布局之一膨脹到CardScrollView嘗試以下操作。

  1. 創建一個看起來像這樣的適配器類

     public class mainAdapter extends CardScrollAdapter { private List<CustomCard> mCards; private LayoutInflater inflater; public mainAdapter(List<CustomCard> cards, LayoutInflater inf) { this.mCards = cards; this.inflater = inf; } @Override public int getCount() { return mCards.size(); } @Override public Object getItem(int i) { return mCards.get(i); } @Override public View getView(int i, View view, ViewGroup viewGroup) { int card = mCards.get(i).getLayout(); view = inflater.inflate(card, viewGroup, false); return view; } @Override public int getPosition(Object o) { return this.mCards.indexOf(o); } } 

我的CustomCard類看起來像這樣,您可以只使用List<Integer>

public class CustomCard {
    public int getLayout() {
        return layout;
    }

    public int layout;

    public CustomCard(int layout)
    {
        this.layout = layout;
    }
}
  1. 在活動類中,創建並填寫所需布局的列表,然后將其傳遞給適配器,如下所示。

onCreate()

CreateCards();
mCardScroller = new CardScrollView(this);
mCardScroller.setAdapter(new mainAdapter(mCards, getLayoutInflater()));

CreateCards()方法看起來像這樣

public void CreateCards() {
        mCards.add(new CustomCard(R.layout.firstview));
        mCards.add(new CustomCard(R.layout.secondview));
        mCards.add(new CustomCard(R.layout.thirdview));
    }

希望這對您有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM