java - Android 可滚动 TextView 边框

标签 java android textview border

我的应用程序中有一个 textView,我在其中显示文本和图形。

一旦内容对于 textView 的约束来说太大了,它就会滚动。

一切正常,但是,我想在它周围添加一个边框。我在这里查看了 SO 和互联网上的其他地方,我能找到的唯一解决方案是在背景周围添加边框,然后将背景应用于所述 TextView。这很好,但是当我们滚动时,内容显然显示在边框上,如下所示:

enter image description here

现在显然,我知道为什么会发生这种情况(因为边框只是背景的一部分),但是我不知道如何将边框置于内容之上。

我唯一拥有的 XML 是背景形状,其他所有内容都是通过编程完成的,因此我正在寻找可以应用于我的情况的解决方案。

XML

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
 <shape android:shape="rectangle">
 <solid android:color="#ffeeeeee"/>
 <stroke
 android:width="15dp"
 android:color="#000000"
 />
 </shape>
</item>
</selector>

Java 代码(类扩展 TextView)

textLayout = new RelativeLayout(context);       
RelativeLayout.LayoutParams textParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
textParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

setTextColor(Color.BLACK);
setGravity(Gravity.CENTER_HORIZONTAL);  
setTextSize(size);
setMovementMethod(new ScrollingMovementMethod());

setBackgroundResource(R.drawable.textbg);
textLayout.setPadding(xPadding, yPadding, xPadding, yPadding);

Bitmap testPic= BitmapFactory.decodeResource(getResources(), R.drawable.pic1);      
Bitmap testPic2= BitmapFactory.decodeResource(getResources(), R.drawable.pic2);         

SpannableStringBuilder builder = new SpannableStringBuilder();
builder.append(Html.fromHtml(someText)).append(" ");
builder.setSpan(new ImageSpan(context, testPic),
builder.length() - 1, builder.length(), 0);
builder.append(Html.fromHtml(someMoreText)).append(" ");
builder.setSpan(new ImageSpan(context, testPic2),
builder.length() - 1, builder.length(), 0);

最佳答案

你的“边框”有 15dp,所以在 dimen.xml 中声明如下:

<resources>
    <dimen name="border_width">15dp</dimen>
</resources>

并将其用作自定义中的填充 TextView :

int pad = getResources().getDimensionPixelSize(R.dimen.border_width);
setPadding(pad, pad, pad, pad);

或者如果您的 View 是在布局 xml 中定义的,只需添加 "android:padding"属性

编辑:

您还可以添加 <padding>在你的里面<shape>并定义顶部/左侧/右侧/底部填充:

<shape android:shape="rectangle">
    ...
    <padding .../>
</shape>

关于java - Android 可滚动 TextView 边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37930747/

相关文章:

java - 如何使用 SeekBar 以编程方式调整设备亮度?

android - 当文本较大且正在滚动时,不显示 TextView Shape 背景

Android:TextView 无法获得焦点

java - 如何设置listgrid过滤器按钮属性? - 智能网关

java - DOM4J 文档 : read an ISO-8859-1 xml

java - 如果先前的过滤器导致空流,则在原始流上过滤

Android Java AsyncTask isCancelled 问题

java - 即使我声明了 Android 权限也不起作用

Android强大的textview识别youtube链接

java - 如何从另一个类访问元素