#android #textview
#Android #textview
Вопрос:
Я работаю над фреймворками Android. Мне нужно изменить форму textview таким образом, чтобы у него были закругленные углы. Не могли бы вы, пожалуйста, помочь мне с этой проблемой?
Ответ №1:
XML-файл, сохраненный в res/drawable/gradient_box.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FFFF0000"
android:endColor="#80FF00FF"
android:angle="45"/>
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>
Этот XML-макет применяет форму, которую можно нарисовать, к представлению:
<TextView
android:background="@drawable/gradient_box"
android:layout_height="wrap_content"
android:layout_width="wrap_content" />
Этот код приложения получает форму, которую можно нарисовать, и применяет ее к представлению:
Resources res = getResources();
Прорисовываемая форма = res. getDrawable (R.drawable.gradient_box);
TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);
Копировать и вставлять изhttp://developer.android.com/guide/topics/resources/drawable-resource.html , первый результат при использовании Google «android TextView со скругленными углами»
[ПРАВИТЬ / ПРАВИТЬ код]
Поскольку вы хотите изменить исходный код Android Framework, вы можете изменить стиль TextView, изменив чертежи по умолчанию. В исходных текстах различные чертежи сгруппированы во внутренний класс, называемый Drawables:
class Drawables {
final Rect mCompoundRect = new Rect();
Drawable mDrawableTop, mDrawableBottom, mDrawableLeft, mDrawableRight;
int mDrawableSizeTop, mDrawableSizeBottom, mDrawableSizeLeft, mDrawableSizeRight;
int mDrawableWidthTop, mDrawableWidthBottom, mDrawableHeightLeft, mDrawableHeightRight;
int mDrawablePadding;
}
Просто измените эти чертежи по своему усмотрению, и вы переопределите TextView.
Я имею в виду эту версию источников TextView.
Комментарии:
1. ответ, на котором вы настаивали, действителен только для уровня приложения, но не в framework. На самом деле я хочу изменить открытый исходный код Android таким образом, чтобы форма textview менялась, это означает, что всякий раз, когда мы обращаемся к textview на уровне приложения, должен отображаться textview с моей указанной формой