通过自定义view的方式,用java代码给textview加边框线

  • Post author:
  • Post category:java


想要实现的效果如图:

mainactivity.xml :

<?xml version="1.0" encoding="utf-8"?>
<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">

    <LinearLayout
        android:id="@+id/ll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tv"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:gravity="center"
            android:text="aaaaaaaaa"
            android:textColor="@color/black" />
    </LinearLayout>

</RelativeLayout>

MainActivity.java:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LinearLayout layout = findViewById(R.id.ll);

        GradientDrawable drawable = new GradientDrawable();
        // 设置圆角弧度为5dp
        drawable.setCornerRadius(dp2px(this, 5f));
        // 设置边框线的粗细为1dp,颜色为黑色【#000000】
        drawable.setStroke((int) dp2px(this, 1f), Color.parseColor("#000000"));
        layout.setBackground(drawable);
    }

    /**
     * 将dp值转换为px值,保证尺寸大小不变
     *
     * @param context  上下文对象
     * @param dipValue 需要转换的值
     * @return 转换后的值
     */
    private float dp2px(Context context, float dipValue) {
        if (context == null) {
            return 0;
        }
        final float scale = context.getResources().getDisplayMetrics().density;
        return (float) (dipValue * scale + 0.5f);
    }
}

然后就可以到达一个边框线的效果了,当然也可以自己在drawable中新建一个xml来实现边框线效果。



版权声明:本文为oAiYinSiTan12原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。