很簡單,在布局 XML 文件的 EditText 中加上下面這行:
在龍州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、網(wǎng)站制作 網(wǎng)站設(shè)計制作定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站制作,龍州網(wǎng)站建設(shè)費用合理。
android:inputType="textMultiLine"
即可。
應(yīng)用中獲取會用到需要自動換行的控件,而這并不是一般的線性或者相對布局就能實現(xiàn)的,在此分享下自定義控件。原型是在網(wǎng)上找到的,在此稍作了修改。
這是設(shè)計出的樣稿,樣稿中的較高的圖片是從一個數(shù)據(jù)集中的穿插在另一個數(shù)據(jù)集中的,Textview的長度需要根據(jù)文字的長度不同而設(shè)置,而左右需要平分,做法如下:
1.將總體分為兩個數(shù)據(jù)集:左右,并用2個LinearLayout分別裝自定義控件
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_marginTop="5dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/span style="line-height: 21px;"PredicateLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
span style="line-height: 21px;"PredicateLayout android:id="@+id/righttab"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/span style="line-height: 21px;"PredicateLayout
2.自定義控件
public class PredicateLayout extends LinearLayout {
int mLeft, mRight, mTop, mBottom;
Hashtable map = new Hashtable();
public PredicateLayout(Context context) {
super(context);
}
public PredicateLayout(Context context, int horizontalSpacing, int verticalSpacing) {
super(context);
}
public PredicateLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int mWidth = MeasureSpec.getSize(widthMeasureSpec);
int mCount = getChildCount();
int mX = 0;
int mY = 0;
mLeft = 0;
mRight = 0;
mTop = 5;
mBottom = 0;
int j = 0;
View lastview = null;
for (int i = 0; i mCount; i++) {
final View child = getChildAt(i);
child.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
// 此處增加onlayout中的換行判斷,用于計算所需的高度
int childw = child.getMeasuredWidth();
int childh = child.getMeasuredHeight();
mX += childw; //將每次子控件寬度進行統(tǒng)計疊加,如果大于設(shè)定的高度則需要換行,高度即Top坐標(biāo)也需重新設(shè)置
Position position = new Position();
mLeft = getPosition(i - j, i);
mRight = mLeft + child.getMeasuredWidth();
if (mX = mWidth) {
mX = childw;
mY += childh;
j = i;
mLeft = 0;
mRight = mLeft + child.getMeasuredWidth();
mTop = mY + 5;
//PS:如果發(fā)現(xiàn)高度還是有問題就得自己再細(xì)調(diào)了
}
mBottom = mTop + child.getMeasuredHeight();
mY = mTop; //每次的高度必須記錄 否則控件會疊加到一起
position.left = mLeft;
position.top = mTop + 3;
position.right = mRight;
position.bottom = mBottom;
map.put(child, position);
}
setMeasuredDimension(mWidth, mBottom);
}
@Override
protected LayoutParams generateDefaultLayoutParams() {
return new LayoutParams(1, 1); // default of 1px spacing
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
// TODO Auto-generated method stub
int count = getChildCount();
for (int i = 0; i count; i++) {
View child = getChildAt(i);
Position pos = map.get(child);
if (pos != null) {
child.layout(pos.left, pos.top, pos.right, pos.bottom);
} else {
Log.i("MyLayout", "error");
}
}
}
private class Position {
int left, top, right, bottom;
}
public int getPosition(int IndexInRow, int childIndex) {
if (IndexInRow 0) {
return getPosition(IndexInRow - 1, childIndex - 1)
+ getChildAt(childIndex - 1).getMeasuredWidth() + 8;
}
return getPaddingLeft();
}
}
3.將數(shù)據(jù)分別填充到左右兩個控件中
這應(yīng)該算是自動換行經(jīng)典實例了吧,相信這個搞定以后同類型的需求都不成問題了。
textView如果想要強制換行的話,必須先把TextView顯示方式修改為多行(android:singleLine="false"),然后才能換行。
方法一般用兩種:
1、在字符串里加入“\n”,如"abc\nrc";
2、把TextView設(shè)置為固定寬度,然后讓系統(tǒng)自動換行。如android:layout_width="100dp";
擴展資料
Class Overview
向用戶顯示文本,并可選擇允許他們編輯文本。TextView是一個完整的文本編輯器,但是基類為不允許編輯;其子類EditText允許文本編輯。
允許用戶復(fù)制部分或全部內(nèi)容,將其粘貼到別的地方,設(shè)置XML屬性Android:textisselectable :“真” 或設(shè)置相關(guān)方法 settextisselectable 為“真”。textisselectable flag 允許用戶在TextView選擇手勢,從而觸發(fā)系統(tǒng)內(nèi)置的復(fù)制/粘貼控件。
Displays text to the user and optionally allows them to edit it. A TextView is a complete text editor, however the basic class is configured to not allow editing; seeEditTextfor a subclass that configures the text view for editing.
To allow users to copy some or all of the TextView's value and paste it somewhere else, set the XML attributeandroid:textIsSelectableto "true" or callsetTextIsSelectable(true). ThetextIsSelectableflag allows users to make selection gestures in the TextView, which in turn triggers the system's built-in copy/paste controls.
參考資料來源:百度百科:TextView