最終效果圖:
控件的思路是2個TextView壓在一起
-------注意更改第二版為可以居中版本,下載Demo后請覆蓋內(nèi)容
文件名:item_rcl.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/one"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:layout_centerHorizontal="true">
<TextView
android:id="@+id/qqq"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="horizontal"
android:text="XINHAO_HAN"
android:textColor="#00ff00"
android:textSize="20sp" />
</LinearLayout>
<RelativeLayout
android:id="@+id/two"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/one">
<TextView
android:id="@+id/zzzz"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="horizontal"
android:text="XINHAO_HAN"
android:textColor="#ff00ff"
android:textSize="20sp" />
</RelativeLayout>
</RelativeLayout>
TextView使用的屬性如下:
XML:
android:scrollbars="horizontal"
java:
textView.setMovementMethod(ScrollingMovementMethod
.getInstance());
textView.setHorizontallyScrolling(true); // 不讓超出屏幕的文本自動換行,使用滾動條
全部代碼 --JAVA
package com.example.downlist.view;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.annotation.Nullable;
import android.text.method.ScrollingMovementMethod;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
import com.example.downlist.R;
import com.example.downlist.utils.UIUtlis;
/**
* Created by Administrator on 2017/9/20.
*/
//歌詞控件
public class RCLView extends FrameLayout {
private View one;
private View two;
private Context context;
private View view;
private int width;
private TextView textView;
private TextView qqq;
public RCLView(Context context) {
super(context);
initView(context, null);
}
private String title = "XINHAO_HAN";
private Paint paint;
public RCLView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initView(context, attrs);
}
public RCLView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context, attrs);
}
//初始化
public void setString(String string) {
textView.setText(string);
qqq.setText(string);
}
public void initView(Context context, AttributeSet attrs) {
this.context = context;
if (view == null)
view = UIUtlis.getView(R.layout.item_rcl);
if (one == null)
one = view.findViewById(R.id.one);
if (two == null)
two = view.findViewById(R.id.two);
textView = two.findViewById(R.id.zzzz);
qqq = one.findViewById(R.id.qqq);
textView.setMovementMethod(ScrollingMovementMethod
.getInstance());
textView.setHorizontallyScrolling(true); // 不讓超出屏幕的文本自動換行御滩,使用滾動條
addView(view);
if (attrs != null) {
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.RCLView);
int topColor = typedArray.getColor(R.styleable.RCLView_topColor, Color.RED);
int boomColor = typedArray.getColor(R.styleable.RCLView_boomColor, Color.BLUE);
String string = typedArray.getString(R.styleable.RCLView_text);
int integer = typedArray.getInteger(R.styleable.RCLView_textSize, 40);
setTopColor(topColor);
setBoomColor(boomColor);
setString(string);
setTextSize(integer);
}
}
//設(shè)置頂部顏色
public void setTopColor(int color) {
qqq.setTextColor(color);
}
//設(shè)置底部顏色
public void setBoomColor(int color) {
textView.setTextColor(color);
}
//設(shè)置字體大小
public void setTextSize(float size) {
qqq.setTextSize(size);
textView.setTextSize(size);
}
//開始測量
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
width = one.getMeasuredWidth();
// Log.e("寬:", "onMeasure: " + width );
}
public void setIndex(int index) {
ViewGroup.LayoutParams layoutParams = two.getLayoutParams();
double i = width * 1.0 / 100;
Log.e("寬:", "setIndex: " + i + " index: " + index + " 總和:" + (i * index));
layoutParams.width = (int) (i * index);
two.setLayoutParams(layoutParams);
}
//開始繪畫
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
}
//XML部分
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/one"
android:layout_width="wrap_content"
android:layout_height="25dp">
<TextView
android:id="@+id/qqq"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="horizontal"
android:text="這是自定義歌詞的一種思路"
android:textColor="#00ff00"
android:textSize="20sp" />
</LinearLayout>
<RelativeLayout
android:id="@+id/two"
android:layout_width="0dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/zzzz"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="horizontal"
android:text="這是自定義歌詞的一種思路"
android:textColor="#ff00ff"
android:textSize="20sp" />
</RelativeLayout>
</FrameLayout>
attrs部分
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="RCLView">
<attr name="topColor" format="color" />
<attr name="boomColor" format="color" />
<attr name="textSize" format="integer"></attr>
<attr name="text" format="string"></attr>
</declare-styleable>
</resources>
//使用
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:hxh="http://schemas.android.com/apk/res-auto"
android:id="@+id/mySheView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.example.downlist.view.RCLView
android:id="@+id/rcView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
hxh:boomColor="#ff0000"
hxh:text="曾經(jīng)的一切,都是那么渺茫,曾經(jīng)的曾經(jīng)都是一切"
hxh:textSize="15"
hxh:topColor="#00ff00"></com.example.downlist.view.RCLView>
<SeekBar
android:id="@+id/see"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:max="100" />
</LinearLayout>
Demo下載:
鏈接: https://pan.baidu.com/s/1i5P6WML 密碼: 3283