我有一个像圆圈的图像。我想只拉伸它内部的一部分,我不想要它的拉伸边界。 例如,我的图像在下面是相同的
我把它设置为背景我的textview.i想要的是,如果文字很大,它会像圆圈一样伸展,文字放在中心的黑色圆圈里。
答案 0 :(得分:5)
使用9-patch图像可能无法实现。但是我认为你的要求可以通过使用形状drawables来实现。以下是您可以参考的示例代码:
以下是代码:
<solid android:color="#ffffff" />
<stroke
android:width="10dp"
android:color="#000000" />
<size
android:height="120dp"
android:width="120dp" />
2.inner_circle.xml
<!-- Give the padding so the text does not touches the edge of inner circle -->
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
<solid android:color="#000000" />
3.Layout Sample
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:background="@drawable/outer_circle"
android:gravity="center" >
<TextView
android:id="@+id/textTest"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/inner_circle"
android:gravity="center"
android:text="Test"
android:textColor="#aaaaaa"
android:textStyle="bold" />
</LinearLayout>
4.以编程方式设置textView布局
// Override this method to get the text width dynamically and
// apply the same height to the textview
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
TextView tvTest = (TextView) findViewById(R.id.textTest);
int tvWidth = tvTest.getWidth();
ViewGroup.LayoutParams tvLayout = tvTest.getLayoutParams();
tvLayout.height = tvLayout.width = tvWidth;
tvTest.setLayoutParams(tvLayout);
}
以下是截图
的一部分
或者您可以查看此链接
How to draw a smaller ShapeDrawable inside another shapeDrawable programmatically
希望这会有用。