HorizontalScrollView動態新增元件,限制一頁的個數
阿新 • • 發佈:2019-02-06
在開發中我們有時候需要動態顯示一些選單元件(同一型別),因為元件不是很多,可是呢,如果一排全部顯示出來又顯得太擠,所以我們就會想著可以讓使用者可以滑動,而在介面上顯示固定個數的選單元件,那麼如何來做呢?看下面程式碼
ScrollView標籤下只能有一個子佈局
<HorizontalScrollView android:layout_width="match_parent" android:id="@+id/hsv" android:layout_height="wrap_content"> <LinearLayout android:layout_width="wrap_content" android:id="@+id/llco" android:orientation="horizontal" android:layout_height="wrap_content"/> </HorizontalScrollView>
我略過了查詢元件以及資料的獲取,因為這些都不是重點
下面是主要的步驟
private void setData() { //---這裡是重點,下面我單獨拿出來講明 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); //--- //根據後臺傳遞過來的資料,動態建立新增元件 for (int i = 0; i < mBeanTests.size(); i++) { LinearLayout linearLayout = new LinearLayout(this); linearLayout.setPadding(DensityUtils.dp2px(this, 5), DensityUtils.dp2px(this, 2), DensityUtils.dp2px(this, 5), DensityUtils.dp2px(this, 2)); linearLayout.setDividerPadding(DensityUtils.dp2px(this, 10)); //這裡,我讓一個介面預設顯示四個選單元件 linearLayout.setLayoutParams( new LinearLayout.LayoutParams(metrics.widthPixels / 4, LinearLayout.LayoutParams.WRAP_CONTENT)); linearLayout.setOrientation(LinearLayout.VERTICAL); linearLayout.setGravity(Gravity.CENTER); TextView textView = new TextView(this); textView.setTextSize(12); textView.setGravity(Gravity.CENTER); textView.setText(mBeanTests.get(i).getTit()); ImageView imageView = new ImageView(this); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(DensityUtils.dp2px(this, 30), DensityUtils.dp2px(this, 30)); imageView.setLayoutParams(layoutParams); imageView.setPadding(DensityUtils.dp2px(this, 2), 0, DensityUtils.dp2px(this, 2), DensityUtils.dp2px(this, 2)); Picasso.with(this).load(mBeanTests.get(i).getImgurl()).config(Bitmap.Config.RGB_565).into(imageView); linearLayout.addView(imageView); linearLayout.addView(textView); //每一次迴圈都將建立的元件新增進容器控制元件中 mLlco.addView(linearLayout); final int finalI = i; linearLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(TestScrollActivity.this, finalI + "--", Toast.LENGTH_SHORT).show(); } }); } }
DisplayMetrics用來可以獲取螢幕引數
Andorid.util包下的DisplayMetrics類提供了一種關於顯示的通用資訊,如顯示大小,解析度和字型。
為了獲取DisplayMetrics成員,首先初始化一個物件如下:
DisplayMetrics metrics =new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics;
注:建構函式DisplayMetrics不需要傳遞任何引數;呼叫getWindowManager()之後,會取得現有Activity的Handle,此時,getDefaultDisplay()方法將取得的寬高維度存放於DisplayMetrics物件中,而取得的寬高維度是以畫素為單位(Pixel),“畫素”所指的是“絕對畫素”而非“相對畫素”。
因為是個簡單的效果,我就不上效果圖啦~~~~~~~~~~~~~
.
.
.
.
.
其實我是不知道怎麼上傳gif圖 哈哈
希望能幫助到你,謝謝瀏覽!