2016-06-20 25 views
0

テキストとグラフィックスを表示するアプリ内にtextViewがあります。Android Scrollable TextView Border

コンテンツがtextViewの制約のために大きすぎると、スクロールします。

すべては完全に機能しますが、その周りに境界線を追加したいと思います。私はここや、インターネット上の他の場所を見て、私が見つけることができる唯一の解決策は、バックグラウンドの周りに境界線を追加し、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); 
+0

あなたのカスタム 'TextView'でパディングを設定すると、それは役に立ちます – pskink

+0

ありがとう@pskink、私はそれを逃したとは思えません。それを答えとして残したいなら、私は喜んで受け入れます。 – Zippy

+0

私の答えを参照してください、正直なところ最新の**編集:**最も簡単な解決策が含まれています – pskink

答えて

1

あなたの "ボーダー" 15dpを持っているので、このようなdimen.xml何かに宣言:

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

また、あなたの内側<padding>を追加することができます

:およびカスタムTextViewでパディングとしてそれを使用する:

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

またはあなたのビューはレイアウトXMLで定義されている場合、単に"android:padding"属性

EDITを追加<shape>を定義し、上/左/右/下のパディングを定義します。

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