gpt4 book ai didi

android - 如何在带有 9-patch 的圆形图像内拉伸(stretch)

转载 作者:行者123 更新时间:2023-11-29 15:15:45 25 4
gpt4 key购买 nike

我有一个圆形的图像。我只想拉伸(stretch)它内部的一部分,我不想拉伸(stretch)它的边界。例如,我的图像在下面是相同的

enter image description here

我将它设置为我的 textview 的背景。我希望如果文本很大,它会拉伸(stretch)成一个圆圈,文本位于中心黑色圆圈中。

最佳答案

使用 9 补丁图像可能无法实现。但是我认为您的要求可以通过使用形状可绘制对象来实现。以下是您可以引用的示例代码:

  1. 在可绘制文件夹中创建两个圆形(outer_circle.xml 和 inner_circle.xml)。
  2. 将 TextView 放在 LinearLayout 中,其中布局背景为外圈,文本背景为内圈。
  3. 以编程方式更新 textview 的高度,使其等于宽度。

代码如下:

  1. outer_circle.xml

<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.布局示例

<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);

}

以下为部分截图

enter image description here

或者你可以看看这个链接

How to draw a smaller ShapeDrawable inside another shapeDrawable programmatically

希望这会有用。

关于android - 如何在带有 9-patch 的圆形图像内拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24124592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com