Android开发中标题下平滑的下划线

在android开发中,viewpager的下划线是经常用到的,有时候一个项目中用到好几处,所以为了方便直接自定义一个类。

这个下划线有以下特点:

1、下划线带水平滑动动画效果;

2、根据viewpager页数,设置下划线;

3、可以设置下划线颜色;

看看效果图


自定义类源码

package com.suowei.appsuowei.myview;

import com.example.appsuowei.R;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;

public class CursorView extends View {

	private int cursorColor = getResources().getColor(R.color.dark_gray); // 线的颜色
	private int counts = 4; // 被分成了几块
	private float posX = 0f; // 当前X坐标的位置
	private Paint paint;
	
	public CursorView(Context context, AttributeSet attrs, int defStyleAttr) {
		super(context, attrs, defStyleAttr);
		init();
	}

	public CursorView(Context context, AttributeSet attrs) {
		super(context, attrs);
		init();
	}

	public CursorView(Context context) {
		super(context);
		init();
	}

	private void init() {
		// 初始化画笔
		paint = new Paint();
		paint.setAntiAlias(true);//边缘相对清晰一点,锯齿痕迹不那么明显
		paint.setDither(true);//设置防抖动
		paint.setColor(cursorColor);//画笔颜色
	}
	
	/**
	 * 设置ViewPager的下划线总共有几条
	 * @param counts
	 */
	public void setCounts(int counts) {
		this.counts = counts;
	}
	
	/**
	 * 设置下滑的颜色
	 * @param counts
	 */
	public void setColor(int cursorColor) {
		this.cursorColor = cursorColor;
	}
	
	/**
	 * 设置坐标,
	 * 该方法在viewpager绑定监听事件的onPageScrolled(int arg0, float arg1, int arg2) 方法中调用
	 * @param pos 当前的item,上面的arg0参数
	 * @param rate 变化率,为上面的arg0
	 */
	public void setXY(int pos, float rate) {
		int single = getMeasuredWidth() / counts;
		posX = pos * single + single * rate;
		invalidate();//重新绘制
	}
	
	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		paint.setStrokeWidth(getMeasuredHeight()+5);
		int width = getMeasuredWidth() / counts;//下划线长度
		canvas.drawLine(posX, 0, posX + width, 0, paint);
	}
	
}

在需要用到的布局中,可以跟普通ImageView,TextView控件一样,添加到布局当中,在Activity中的ViewPager监听事件OnPageChangeListener中,重写onPageScrolled方法

@Override
		public void onPageScrolled(int arg0, float arg1, int arg2) {
			cursorView.setXY(arg0, arg1);
		}

在Activity的onCreate生命周期方法中,设置下划线的总条数,下划线的颜色

cursorView.setCounts(int count);
cursorView.etColor(int cursorColor);


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android Studio,你可以通过在styles.xml文件定义一个自定义的样式来修改EditText控件的下划线颜色。首先,在styles.xml文件添加以下代码: ```xml <style name="MyEditText" parent="Theme.AppCompat.Light"> <item name="colorControlNormal">@android:color/darker_gray</item> <item name="colorControlActivated">@android:color/holo_orange_dark</item> </style> ``` 然后,在你的EditText控件应用这个样式: ```xml <EditText ... style="@style/MyEditText" ... /> ``` 这样,你就可以修改EditText控件的下划线颜色了。 对于设置按钮为圆角以及修改按钮颜色,你可以使用背景属性和shape资源来实现: ```xml <Button ... android:background="@drawable/rounded_button" ... /> ``` 然后,在drawable文件夹创建一个rounded_button.xml文件,并在其定义圆角和颜色: ```xml <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="10dp" /> <solid android:color="#FF0000" /> </shape> ``` 这样,你就可以将按钮设置为圆角并修改按钮的颜色了。 至于约束布局预览与运行效果不一致的问题,可能是因为你的布局包含了一些约束错误或者未正确设置约束条件。你可以检查一下布局的约束条件是否正确,并确保布局的所有控件都正确约束。此外,你也可以尝试重新编译和运行项目,以确保所有的布局更改都被正确应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值