1. 程式人生 > >自定義TextView,解決計算listView中item高度的時候,如果其中的TextView字數超過一行,只計算到一行高度的問題

自定義TextView,解決計算listView中item高度的時候,如果其中的TextView字數超過一行,只計算到一行高度的問題

    動態計算listView中item 的高度時,如果其中textview超過一行,只會計算其中第一行的剛度,(雙層listview巢狀使用時經常出現這種問題)。我們需要自定義textview,動態計算textView的高度,具體程式碼如下

package com.example.wisdomoperating.view;
import android.app.Activity;
import android.content.Context;
import android.text.Layout;
import android.util.AttributeSet;
import android.util.FloatMath;
import android.widget.LinearLayout; import android.widget.TextView; /** * * @author zhengaoyang *自定義TextView,解決計算listViewitem高度的時候,如果其中的TextView字數超過一行,只計算到一行高度的問題 */ public class myTextView extends TextView { private Context context; public myTextView(Context context) { super(context);
// TODO Auto-generated constructor stub this.context = context; } public myTextView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub this.context = context; } public myTextView(Context context, AttributeSet attrs, int defStyle) { super
(context, attrs, defStyle); // TODO Auto-generated constructor stub this.context = context; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); Layout layout = getLayout(); if (layout != null) { int height = (int)FloatMath.ceil(getMaxLineHeight(this.getText().toString())) + getCompoundPaddingTop() + getCompoundPaddingBottom(); int width = getMeasuredWidth(); setMeasuredDimension(width, height); } } private float getMaxLineHeight(String str) { float height = 0.0f; float screenW = ((Activity)context).getWindowManager().getDefaultDisplay().getWidth(); float paddingLeft = ((LinearLayout)this.getParent()).getPaddingLeft(); float paddingReft = ((LinearLayout)this.getParent()).getPaddingRight(); //這裡具體this.getPaint()要注意使用,要看你的TextView在什麼位置,這個是拿TextView父控制元件的Padding的,為了更準確的算出換行 int line = (int) Math.ceil( (this.getPaint().measureText(str)/(screenW-paddingLeft-paddingReft))); height = (this.getPaint().getFontMetrics().descent-this.getPaint().getFontMetrics().ascent)*line; return height;} }

相關推薦

定義TextView解決計算listViewitem高度的時候如果其中TextView字數超過一行計算一行高度的問題

    動態計算listView中item 的高度時,如果其中textview超過一行,只會計算其中第一行的剛度,(雙層listview巢狀使用時經常出現這種問題)。我們需要自定義textview,動態計算textView的高度,具體程式碼如下 package com.e

android 事件分發解決由於listview實時重新整理導致子view點選事件失效

近期由於個人的某些因素作怪,導致沒有很好地總結和積累,主要是最近一段時間,大多數接觸的都是第三方的sdk ,在一些介面問題上造成了很多困擾,很是麻煩,並且說明文件也不詳細,所以每每遇到一些問題都要等待很久才能解決。 好了,廢話不多說了。下面開始今天的

Android定義控制元件系列 十:利用新增定義佈局來搞定觸控事件的分發解決組合介面特定控制元件響應特定方向的事件

        這個例子是比較有用的,基本上可以說,寫完這一次,以後很多情況下,直接拿過來addView一下,然後再addInterceptorView一下,就可以輕輕鬆鬆的達到組合介面中特定控制元件來響應特定方向的觸控事件了。         在寫Android應用

解決定義控制元件View在MainActivityfindviewbyid為空的問題

同事在自定義轉盤的程式碼里加了一個介面回撥,一直崩潰,一直以為是介面的問題 ,後來才發現是view中建構函式的問題 public Lucky(Context context) { this(context,null); } public Lucky(

在springboot打包成jar後無法讀取定義檔案的解決辦法

前兩天在做springcloud框架下的專案的時候,用到有一個框架之外的檔案需要進行讀取,當時在eclipse中編碼時通過this.getClass().getResource來獲取檔案的路徑,沒有任何的問題,但是在打成jar以後,這是是打成jar包不是war,結果發現不能正常的讀取我放在工程裡

定義引數 params 可以和文件某個欄位 做計算

GET /quality_control/my_type/_search {   "query": {     "match_all": {}   },   "script_fields": {     "test2": {       "script": {        

androidの定義控制元件View在Activity使用findByViewId得到結果為null,解決方法。。

androidの自定義控制元件View在Activity中使用findByViewId得到結果為null 1.  大家常常自定義view,,然後在xml 中新增該view 元件。。如果在Activity 中使用findByViewId 方法獲取該view 時候,返回物件總為

ThinkPHP搜尋條件是陣列加一條定義Sql條件解決辦法

今天遇到一個問題,原來的搜尋需要加一個搜尋,而這個搜尋是比較倆個欄位,而之前的搜尋條件是陣列,查閱資料解決辦法如下: // 原來的搜尋條件 $where = array( 'user_ex

【redis1】java操作redis: 將string、list、map、定義的物件儲存到redis

一、操作string 、list 、map 物件 1、引入jar: jedis-2.1.0.jar 2、程式碼 /**      * @param args      */     pub

定義實現帶checkbox的listView(用於專案的多語言實現介面)

我感覺自定義listview最主要的原因就是系統自帶的一些佈局不能夠滿足我們的專案需求。 我這裡實現的自定義listview是用來實現之前部落格中提到的多語言切換的,在展示應用支援的語言的同時要讓使用者知道當前使用的語言是哪一種。 public static class

hexo部落格yili主題個性化定義教程(1) ——借鑑學習初認yili主題

文章轉載於:hexo部落格yili主題個性化自定義教程(1) ——借鑑中學習,初認yili主題 這個部落格跌跌撞撞也弄了好多天了,由於Next主題不知道什麼情況,被我玩壞了。所以換了一個主題。 大名鼎鼎的yilia主題,崇尚簡約優雅,以及極致的效能,符合我的性格。以後很長一段時間都用這個主題啦。 接下來來說

linux下開發解決cocos2d-x編譯出現的一個小問題, undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'

water span x86 code bject data- ace 技術分享 inux 解決cocos2d-x中編譯出現的一個小問題 對於cocos2d-x 2.×中編譯中,若頭文件裏引入了#include "cocos-ext.h",在進行C++編譯的時候會遇到例

c#(winform)定義ListItem類方便ComboBox添加Item

urn left over string his 定義 return box item 1.定義ListItem類 public class ListItem { private string _key = string.Empty;

Qt MainWindow定義函數調用MainWindow方法

main mes ren col append tex char nbsp set MainWindow *m;//定義全局 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),

Expo大作戰(十三)--expo如何定義狀態了stateBar以及expo如何處理脫機緩存加載 offline support

什麽是 生命 () 信息 screen hub .json 狀態欄顏色 sset 簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo以來,對expo的研究斷斷續續,一路走來將近10個月,廢話不多說,接下來你看到內容,講全部來與官網 我

Hive如何添加定義UDF函數以及oozie使用hive的定義函數

步驟 strong 重啟 一個 文件夾 spa nlog hdfs share 直接來說操作步驟: 1. 修改.hiverc文件 在hive的conf文件夾下面,如果沒有.hiverc文件,手工自己創建一個。 參照如下格式添加: add jar /usr/loc

19.7 主動模式和被動模式;19.8 添加監控主機;19.9 添加定義模板19.10處理圖形

處理圖形中的亂碼 添加監控主機 主動模式和被動模式 19.7 主動模式和被動模式1. 主動或者被動是相對客戶端來講的2. 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端3. 主動模式,客戶端會主動把監控數據匯報給服務端,服務端只負責接收即可。4.

定義Log 寫到文件

public stream ndt generic file alt IT ram -- using System; using System.Collections.Generic; using System.Web; using System.IO

關於ListViewitem與子控件搶奪焦點的解決方法

ble androi 子類 直接 沖突 getview block BE 之間 1.在開發中,listview可以說是我們使用最頻繁的控件之一了,但是關於listview的各種問題也是很多。當我們使用自定義布局的Listview的時候,如果在item的布局文件裏面存在But

MiniUI定義列內容解決方案

MiniUI 自定義列背景很多時候,我們需要自定義行內容。方案這個時候,就需要自定義列內容源碼<div id="datagridTable" class="mini-datagrid" style="width:100%;min-height: 300p