如何寫一個可以展開的TextView,展開TextView
原理是通過點擊的時候設定 setMaxLines(lineNum)來實現:
public class ExpandableTextView extends TextView { private static int MIN_LINE_NUM = 2; private static int MAX_LINE_NUM = 20; private int lineNum = MIN_LINE_NUM; private boolean mIsExpanded = false; Bitmap bitmapDown; Bitmap bitmapUp; int w, h; /** 點擊事件listener */ private OnClickListener mOnClickListener; public ExpandableTextView(Context context, AttributeSet attrs) { super(context, attrs); init(context, attrs); } private void init(Context context, AttributeSet attrs) { setMaxLines(lineNum); bitmapDown = BitmapFactory.decodeResource(getResources(), R.drawable.update_detail_down); bitmapUp = BitmapFactory.decodeResource(getResources(), R.drawable.update_detail_up); w = bitmapDown.getWidth() + (int) context.getResources().getDimension(R.dimen.expand_textview_right); h = bitmapDown.getHeight() + (int) context.getResources().getDimension(R.dimen.expand_textview_bottom); super.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (lineNum == MIN_LINE_NUM) { lineNum = MAX_LINE_NUM; setMaxLines(lineNum); } else { lineNum = MIN_LINE_NUM; setMaxLines(lineNum); } if (mOnClickListener != null) { mOnClickListener.onClick(v); } } }); } @Override public void setOnClickListener(OnClickListener listener) { if (!isClickable()) { setClickable(true); } mOnClickListener = listener; } @Override public void setMaxLines(int maxlines) { super.setMaxLines(maxlines); if (lineNum == MAX_LINE_NUM) { mIsExpanded = true; } else { mIsExpanded = false; } } public boolean isExpanded() { return mIsExpanded; } @Override protected void onDraw(Canvas canvas) { if (getLineCount() <= MIN_LINE_NUM) { super.onDraw(canvas); return; } if (lineNum == MIN_LINE_NUM) { canvas.drawBitmap(bitmapDown, getWidth() - w, getHeight() - h, null); } else { canvas.drawBitmap(bitmapUp, getWidth() - w, getHeight() - h, null); } super.onDraw(canvas); } public void setMaxLine(int line) { lineNum = line; setMaxLines(line); }}
這樣來寫Layout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFF" > <TextView android:id="@+id/detail_action" android:textColor="#000000" android:textSize="11sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginRight="8dip" android:drawablePadding="4dip" android:paddingBottom="10dip" android:paddingTop="10dip" android:singleLine="true" android:text="sdfkljsfiosjdfiosfjsiofjsdifsd" /> <com.example.view.ExpandableTextView android:id="@+id/textview" android:layout_width="100dp" android:layout_height="wrap_content" android:layout_below="@id/detail_action" android:lineSpacingExtra="4dip" android:paddingBottom="-40dip" android:paddingRight="48dip" android:text="adfsfsfewrwerwerwerqRWgdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfERSAFSDFSDFSDd" android:layout_marginTop="-5dip" android:textColor="#000000" > </com.example.view.ExpandableTextView> <TextView android:id="@+id/detail_action1" android:textColor="#000000" android:textSize="11sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/textview" android:layout_marginRight="8dip" android:drawablePadding="4dip" android:paddingBottom="10dip" android:paddingTop="10dip" android:singleLine="true" android:text="sdfkljsfiosjdfiosfjsiofjsdifsd" /></RelativeLayout>
:
代碼:http://download.csdn.net/detail/baidu_nod/7812741
我想在addroid eclipse上放一個textview,可是只可以找到什autoComplete textview,為何?
Textview mytextview=null; //聲明一個Textview
mytextview=(Textview)findViewById(R.id.myTextView); //讓mytextview指向xml中名為myTextView的一個Textview控制項
myTextView.append("12345"); //這句的本意應該是在添加的“12345”字串到Textview中,但是你這裡應該要用mytextview.append("12345");而不是myTextView。
//明白?java是對大小寫敏感的,在這段代碼中,你已經將xml中名為myTextView的Textview賦給mytextview了。或許這裡就是你出錯的原因
這段代碼的意思如上注釋,應該放在一個activity中,應該就是你所說的mainActivity.java中
望採納!
怎重新整理activity上的一個textView
收到一個廣播後就重新整理textview,setText後內容沒有顯示出來,要按一下activity上的按鍵才顯示出來!------解決方案--------------------------------------------------------handler------解決方案--------------------------------------------------------收到廣播後,sendmessage,handler接收處理更新就好了------解決方案--------------------------------------------------------你debug一下,看你的setText到底有沒有執行到------解決方案--------------------------------------------------------當然用Handler呀,還有post,和AsyncTask方式都是可以的。