我的应用程序中有一个 textView,我在其中显示文本和图形。
一旦内容对于 textView 的约束来说太大了,它就会滚动。
一切正常,但是,我想在它周围添加一个边框。我在这里查看了 SO 和互联网上的其他地方,我能找到的唯一解决方案是在背景周围添加边框,然后将背景应用于所述 TextView。这很好,但是当我们滚动时,内容显然显示在边框上,如下所示:
现在显然,我知道为什么会发生这种情况(因为边框只是背景的一部分),但是我不知道如何将边框置于内容之上。
我唯一拥有的 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/