当前位置: 首页 > 知识库问答 >
问题:

为了有圆角,把TextView背景设置成drawable很费时间吗?

傅经业
2023-03-14

我发现许多在线资源建议使用9补丁文件作为TextView的背景,以便让TextView具有圆角。

但我认为拉伸图像文件非常耗时。

如果我们在 TextView 上方创建一个 LinearLayout,并在左侧有一个小的左圆角可绘制 ImageView,在右侧有一个右圆角可绘制的 ImageView。

然后放一个TextView。

然后使用类似的方法创建显示底部两个角的LinearLayout。

这个解决方案会更好一点吗?

共有3个答案

吕树
2023-03-14

为了逗乐,我将以下内容放在一起进行性能测试:

public class OverNineThousandPatchActivity extends Activity {
    boolean flag = false;

    public void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Button button = new Button(this);
        button.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
        setContentView(button);

        long startTime = SystemClock.uptimeMillis();
        long iterations = 100000;

        for (long i = 0; i < iterations; i++) {
            button.setBackgroundResource(flag ? R.drawable.panel_shadow : R.drawable.progress_overlay);
            flag = !flag;
        }

        long total = SystemClock.uptimeMillis() - startTime;
        Log.d("OverNineThousand", "Total elapsed: " + total + " Individual: " + (total / iterations));
    }
}

创建一个视图,然后连续100,000次将背景设置为两个交替的九色图像。尝试了五次不同的运行:

Total Time | Time Per setBackgroundResource()
           |
5,177 ms   | .05177 ms
4,793 ms   | .04793 ms
4,851 ms   | .04851 ms
4,957 ms   | .04957 ms
4,957 ms   | .04957 ms

大约 1/20 毫秒。

我不会担心它。;)

(*完全不是科学测试)

澹台蕴藉
2023-03-14

用户界面没有固定的脚本,你可以用不同的方式设计,我也可以用不同方式设计。

使用9块图像很耗时,因为您需要先创建它们,但它们确实很有用,但我更喜欢创建可绘制的形状,并将其用作文本视图背景

喜欢这个

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFFFF"/>
    <corners android:radius="10px"/>
    <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" /> 
</shape>

并使用这个可绘制的作为我的文本视图背景

扶杜吟
2023-03-14

我主要使用xml drawables来创建我的< code >按钮和< code >文本视图背景,你只需添加< code >

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient android:startColor="#BBBBBB" android:endColor="#CCCCCC" android:angle="270"    android:type="linear"/>

    <corners android:radius="5dp"/> <!-- gives your background rounded corners -->
    <stroke android:width="1dp" android:color="#60EEEEEE"/> <!-- creates a border around the image -->
</shape>
 类似资料:
  • 本文向大家介绍Android中TextView显示圆圈背景或设置圆角的方法,包括了Android中TextView显示圆圈背景或设置圆角的方法的使用技巧和注意事项,需要的朋友参考一下 前言 在我们学习android这么久,而且使用TextView那么长时间,我们一直没有用过给TextView添加背景,或者是给TextView添加添加边框,以及怎么样设置TextView的形状。今天在写代码的时候就用

  • 如何解决这个问题?任何建议都将不胜感激。谢谢你。

  • 我正在使用itext 4.2 java生成pdf,希望有圆角和背景色,我也能做到这一点。我面临一个问题,第一列是单独获取圆角和背景的,所以为了修复它,我需要在表中添加一个包含总列数的空行,添加后,表显示正确的圆角和背景。 我现在面临的问题是,pdfptableevent没有正确地应用于多个页面。表有许多记录,它在多个页面上进行拆分,其行为只是行的第一列被其背景色取整。其余的列并没有应用pdfpta

  • 我试图用圆角做一个边框。边框内应该是设置边框的组件决定绘制的任何内容,边框外应该“没有”;也就是说,它应该在这些地方绘制父组件的油漆。 我想得到的是: 我得到的是: 看到带有蓝色边框的容器的白色角落。我需要摆脱它们。我正在尝试使用自定义来实现这一点: 当父组件有一个坚实的背景时,这可以很好地工作,但是如果它有一个背景图像,它当然不会。有没有办法获得在上述地方绘制的实际颜色? 有没有更好的方法来实现

  • 我想绕过视图的各个角落,并在运行时根据内容更改视图的颜色。 我希望设置一个可绘制的和颜色会重叠,但他们没有。我第二次执行的那一个就是生成的背景。 有没有办法以编程方式创建这个视图,记住背景颜色要到运行时才会决定? 编辑:我现在只在红色和蓝色之间交换测试。稍后,颜色将由用户选择。 编辑: 标记为圆角。xml:

  • 我想制作圆角对话框;但是在我完成后,它出现了这样的 爪哇 XML 问题是:为什么对话框仍然显示在没有角半径的背景中? 在寻找这个问题的解决方案后,我找到了一些解决方案 1-Android对话框-圆角和透明度 2-带有圆角的Android自定义警报对话框 3-带圆角的Android对话框背景有分层背景 Java-测试上述解决方案后 测试解决方案后的结果 现在对话框根本没有出现!任何人都可以给我解决这