android textview import,Android控件之——TextView

1.设置行间距

android:lineSpacingMultiplier="1.8"

2.字间距设置(需要自定义控件)

import android.graphics.*;

import android.text.TextUtils;

import android.util.AttributeSet;

import android.widget.TextView;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

* Created by mrni-mac on 14-11-25.

*/

public class MyTextView extends TextView {

private String content;

private int width;

private Paint paint;

private int xPadding;

private int yPadding;

private int textHeight;

private int xPaddingMin;

int count;

int[][] position;

public MyTextView(Context context) {

super(context);

init();

}

public MyTextView(Context context, AttributeSet attrs) {

super(context, attrs);

init();

}

public MyTextView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

init();

}

public void setText(String str) {

width = this.getWidth();

getPositions(str);

this.invalidate();

}

public void init() {

paint = new Paint();

paint.setColor(Color.parseColor("#888888"));

paint.setTypeface(Typeface.DEFAULT);

paint.setTextSize(dip2px(this.getContext(), 14f));

Paint.FontMetrics fm = paint.getFontMetrics(); //

textHeight = (int) (Math.ceil(fm.descent - fm.top) + 2); //

xPadding = dip2px(this.getContext(), 4f);

yPadding = dip2px(this.getContext(), 10f);

xPaddingMin = dip2px(this.getContext(), 2f);

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

if (!TextUtils.isEmpty(content)) {

for (int i = 0; i < count; i++) {

canvas.drawText(String.valueOf(content.charAt(i)),

position[i][0], position[i][1], paint);

}

}

}

public void getPositions(String content) {

this.content = content;

char ch;

int x = 0;

int lineNum = 1;

count = content.length();

position = new int[count][2];

for (int i = 0; i < count; i++) {

ch = content.charAt(i);

String str = String.valueOf(ch);

Rect rect = new Rect();

paint.getTextBounds(str, 0, 1, rect);

int strwidth = rect.width();

if (str.equals("?") || str.equals("?")) {

strwidth += (xPaddingMin * 2);

}

float textWith = strwidth;

x += textWith;

if (x > width) {

lineNum++; //

x = 0;

} else {

x -= textWith;

}

position[i][0] = x;

position[i][1] = (textHeight * lineNum) +

(yPadding * (lineNum - 1));

if (isNumOrLetters(str)) {

x += (textWith + xPaddingMin);

} else {

x += (textWith + xPadding);

}

}

this.setHeight((textHeight + yPadding) * lineNum);

}

public boolean isNumOrLetters(String str) {

String regEx = "^[A-Za-z0-9_]+$";

Pattern p = Pattern.compile(regEx);

Matcher m = p.matcher(str);

return m.matches();

}

public static int dip2px(Context context, float dip) {

final float scale = context.getResources().getDisplayMetrics().density;

return (int) ((dip * scale) + 0.5f);

}

}

3.字水平方向缩放

android:textScaleX="1.5"

4.内容省略

android:ellipsize="end"   省略号在结尾

android:ellipsize="start"   省略号在开头

android:ellipsize="middle" 省略号在中间

5.内容滚动展示(跑马灯)

android:ellipsize="marquee" 跑马灯

6.内容的收起及展开功能

//默认展示三行

android:lines="3"

//结尾显示省略号

android:ellipsize="end"

//以上两属性为内容的收起效果

//代码实现

TextView.setLines(3);

TextView.setEllipsize(TextUtils.TruncateAt.END);

//内容展开

//消除省略号

TextView.setEllipsize(null);

//消除lines=="3"这个固定值

TextView.setSingleLine(false);

7.设置小图标

xml设置

android:drawableLeft=""

android:drawableTop=""

android:drawableRight="@mipmap/jiaotou_xuanzexiangmu_xia"

android:drawableBottom=""

代码动态设置

Drawable drawableRightUP = getResources().getDrawable(R.mipmap.jiaotou_xuanzexiangmu_shang);

//left小图标放在左边

//top小图标放在上面

//right小图标放在右边

//bottom小图标放在下面

textView.setCompoundDrawablesWithIntrinsicBounds(null, null, drawableRightUP, null);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,作为AI模型,我无法截图和运行代码。但是我可以提供相应的XML布局文件和Java代码: XML布局文件(activity_main.xml): ``` <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" tools:context=".MainActivity"> <ImageView android:id="@+id/imageView" android:layout_width="30dp" android:layout_height="30dp" android:layout_marginLeft="16dp" android:src="@drawable/your_foreground_image" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:layout_toRightOf="@+id/imageView" android:text="宠物名:" android:textSize="20sp" /> <EditText android:id="@+id/editText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:layout_toRightOf="@+id/textView" /> </RelativeLayout> ``` Java代码(MainActivity.java): ``` import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private EditText editText; private TextView textView; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = findViewById(R.id.editText); textView = findViewById(R.id.textView); button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String petName = editText.getText().toString(); if (petName.equals("")) { Toast.makeText(MainActivity.this, "请输入宠物名称", Toast.LENGTH_SHORT).show(); } else { new AlertDialog.Builder(MainActivity.this) .setTitle("确认") .setMessage("您输入的宠物名称为:" + petName) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 确认操作 } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 取消操作 } }) .show(); } } }); } } ``` 请注意替换布局文件中的`your_foreground_image`为自己想要显示的图片资源。同时,Java代码中的按钮可以自己添加或者省略,具体操作不影响布局实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值