1. 程式人生 > >一個簡單的模擬歌曲分類的佈局

一個簡單的模擬歌曲分類的佈局

模擬了一個電臺分類的選單。

這個挺簡單的。就是根據資料控制控制元件的位置就行了。

這裡寫圖片描述

資料來源就是一個二維的陣列

private List<List<ClassifyBean>> lists = new ArrayList<List<ClassifyBean>>();

然後第一個格子要大的佔兩行。


    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);
        for
(int i = 0; i < lists.size(); ++i) { List<Button> tempListBt = new ArrayList<Button>(); RelativeLayout rl = new RelativeLayout(getContext()); LayoutParams rlParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); rlParams.topMargin = 9
; //控制控制元件放在哪裡 int leftMarin = 0; int topMargin = 0; for (int j = 0; j < lists.get(i).size(); ++j) { Button bt = new Button(getContext()); bt.setBackgroundResource(R.drawable.click_border_selector); bt.setId(View.generateViewId()); bt.setTextColor(getColor(R.color.white)); final
ClassifyBean cb = lists.get(i).get(j); String text = cb.getName(); bt.setText(text); tempListBt.add(bt); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if(clickInter != null){ clickInter.clickClassify(cb); } } }); if(j == 0){ //第一個,大塊的 RelativeLayout.LayoutParams btParams = new RelativeLayout.LayoutParams( gridWidth, gridWidth); btParams.leftMargin = leftMarin; btParams.topMargin = topMargin; bt.setLayoutParams(btParams); leftMarin += gridWidth; } else if(leftMarin >= width){ //換行 topMargin += gridWidth / 2 ; if (j == 4) { // 第二行 leftMarin = gridWidth; } else { // 超過第二行了 leftMarin = 0; } RelativeLayout.LayoutParams btParams = new RelativeLayout.LayoutParams( gridWidth, gridWidth / 2); btParams.leftMargin = leftMarin; btParams.topMargin = topMargin; bt.setLayoutParams(btParams); leftMarin += gridWidth; } else{ RelativeLayout.LayoutParams btParams = new RelativeLayout.LayoutParams( gridWidth, gridWidth / 2); btParams.leftMargin = leftMarin; btParams.topMargin = topMargin; bt.setLayoutParams(btParams); leftMarin += gridWidth; } rl.addView(bt); } listBt.add(tempListBt); this.addView(rl, rlParams); } }

主要就是控制以下onlayout的佈局就可以了。

呼叫的:

 <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <sudoku.myself.xhc.com.myapplication.ClassifyView
        android:id="@+id/classify_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         />
 </ScrollView>

外面之所以有ScrollView,是因為很有可能會超出螢幕。

控制元件的位置就是用margin來控制的。好了。到這裡。

原始碼下載

習大大說要早點休息

加好友:

這裡寫圖片描述