Изменение формы textview в фреймворке Android

#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 с моей указанной формой