带有形状或线条的TextView

时间:2013-10-14 15:02:39

标签: java android textview android-canvas extend

我想在TextView中的一些文本上绘制一条简单的线条。我看过各种似乎覆盖onDraw()函数的例子,但我的理解是在绘制某些东西时会调用onDraw()。

我想在TextView中使用一条垂直线,此时我真的不在乎它的位置,一旦我有线,我相信我能够将它操纵到我想要的位置。

我有一个TextViewWithLines类,它扩展了代码所在的TextView:

public class TextViewWithLines extends TextView {

public TextViewWithLines(Context context){
    super(context);
}

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

public TextViewWithLines(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

我还有一个片段,我希望在创建视图时绘制线条。

public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){
    View v = inflater.inflate(R.layout.fragment_hello_moon, parent, false);

    t1 = (TextViewWithLines)v.findViewById(R.id.display1);
            .................
}

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

如您所述,您只需要在onDraw()中进行绘图。

这是一个(工作)示例,希望Textview中的所有文本都加下划线;

How can I have a row separating line in TextView

答案 1 :(得分:0)

一种可能的解决方案(只是一个简单的XML布局):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/small_layout"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textStyle="bold"
        android:textSize="@dimen/define_your_size"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        />

    <LinearLayout
        android:id="@+id/text_separator"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:orientation="vertical"
        android:background="@color/define_your_color"
        android:layout_alignParentTop="true"/>

</RelativeLayout>

如果要围绕TextView(如矩形)绘制形状,可以定义可绘制的背景并设置所需的颜色:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_selected="true">
        <shape>
            <stroke android:color="#FFCC00" android:width="3dp"></stroke>
            <corners android:radius="5dp"/>
            <solid android:color="#FAFFA8"/>
        </shape>
    </item>

    <item android:state_enabled="false">
        <shape>
            <stroke android:color="#FFFFFF" android:width="2dp"></stroke>
            <corners android:radius="5dp"/>
            <solid android:color="#00FFFFFF"/>
        </shape>
    </item>

    <item>
        <shape>
            <stroke android:color="#DADADA" android:width="2dp"></stroke>
            <corners android:radius="5dp"/>
            <solid android:color="#FFFFFF"/>
        </shape>
    </item>

</selector>