有些頁面中ListView只是整個(gè)頁面的一小部分,需要上下滑動整個(gè)頁面,ListView不讓自己滑動,默認(rèn)ListView只會顯示第一個(gè)item。這個(gè)時(shí)候需要重新設(shè)置一下ListView的高度。如果ListView的item中有TextView并且TextView的行數(shù)大于1行,這個(gè)時(shí)候.重設(shè)ListView的高度卻計(jì)算不出TextView的高度,會出現(xiàn)TextView只顯示一行的情況。這個(gè)時(shí)候需要使用自定義的TextView,并且不要設(shè)置MaxLines這個(gè)屬性。
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比高縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式高縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋高縣地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。設(shè)置ListView高度的代碼:
public static void SetHeigth(ListView list) { ListAdapter listAdapter = list.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0, len = listAdapter.getCount(); i < len; i++) { View listItem = listAdapter.getView(i, null, list); // listItem.measure(LinearLayout.LayoutParams.MATCH_PARENT,0); listItem.measure(0,0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = list.getLayoutParams(); params.height = totalHeight+ (list.getDividerHeight() * (listAdapter.getCount() - 1)); list.setLayoutParams(params); }
自定義TextView的代碼:
public class MyTextView extends TextView { private Context context; public MyTextView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub this.context=context; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // TODO Auto-generated method stub super.onMeasure(widthMeasureSpec, heightMeasureSpec); Layout layout = getLayout(); if (layout != null) { int height = (int)Math.ceil(getMaxLineHeight(this.getText().toString())) + getCompoundPaddingTop() + getCompoundPaddingBottom(); int width = getMeasuredWidth(); setMeasuredDimension(width, height); } } private float getMaxLineHeight(String str){ float height = 0.0f; float screenW = context.getResources().getDisplayMetrics().widthPixels; float paddingLeft = ((LinearLayout)this.getParent()).getPaddingLeft(); float paddingReft = ((LinearLayout)this.getParent()).getPaddingRight(); //這里具體this.getPaint()要注意使用,要看你的TextView在什么位置,這個(gè)是拿TextView父控件的Padding的,為了更準(zhǔn)確的算出換行 int line = (int) Math.ceil( (this.getPaint().measureText(str)/(screenW-paddingLeft-paddingReft))); height = (this.getPaint().getFontMetrics().descent-this.getPaint().getFontMetrics().ascent)*line; return height; } }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。