2016-06-15 2 views
1

Я расширил класс TextView до «CustomTextView», поэтому мне нужно было установить собственный шрифт. Таким образом, это результат:Android studio: изменить textSize on Custom extends activity

public class CustomTextView extends TextView { 

    public CustomTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     this.setTypeface(Typeface.createFromAsset(context.getAssets(), "fonts/nn.otf")); 
     this.setTextSize(30); 
    } 
} 

Вы можете видеть, что я выставиться по умолчанию TextSize в том, что это 30:

Когда я хочу эту CustomTextView, я использую этот код:

<com.calendar.CustomTextView 
    android:id="@+id/edData" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="DOM 21 GIU" 
    android:textSize="45dp"/> 

Если вы заметили , Я установил значение textSize в 45dp, но он остается 30 (из пользовательского класса). Как установить другой textSize? Кроме того, для смелого стиля?

ответ

0

Чтобы установить стиль, просто используйте android:textStyle="bold". Для вашей другой проблемы вы можете проверить textSize из атрибутов, которые, как я считаю, используя метод attrs.getAttribute(NAME OF ATTRIBUTE), а затем вы можете установить его на это значение или установить его в 30 в зависимости от того, что вы хотите.

+0

Если я использую 'android: textStyle = "bold", это не сработает, по той же причине textSize – Simone

+0

Еще нужна помощь – Simone

1

вы должны удалить this.setTextSize (30); из конструктора, потому что макет xml делает изменение размера во время вызова super (context, attrs), а жирный шрифт должен быть включен в файл otf (обычно это разные файлы otf для разных стилей)

+0

Я знаю это ... Так что мне нужно установить textSize для каждого текста? – Simone

+0

, если вам нужно использовать одинаковый размер для всех текстовых просмотров, вы можете использовать стиль https://developer.android.com/guide/topics/ui/themes.html – CLucera

+0

У меня есть несколько текстовых представлений, но каждый из них должен иметь текст другой, но тот же шрифт – Simone

1

Это мой Решение: (Я сделал тесты с textColor, а не textSize, но это то же самое).

Я редактировал Рез/значение/atrs.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="CustomTextView"> 
     <attr name="textColor" format="string" /> 
    </declare-styleable> 
</resources> 

Затем я редактировал свой класс, как:

public class CustomTextView extends TextView { 

    public CustomTextView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(attrs); 
    } 

    public CustomTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(attrs); 
    } 

    public CustomTextView(Context context) { 
     super(context); 
     init(null); 
    } 

private void init(AttributeSet attrs) { 
    if (attrs != null) { 
     TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.CustomTextView); 
     String fontName = a.getString(R.styleable.CustomTextView_fontName); 

     if (textColor != null) { 
      this.setTextColor(Color.parseColor(textColor)); 
     } else { 
      this.setTextColor(Color.parseColor("#000000")); 
     } 

     a.recycle(); 
    } 
    } 

} 

Так что работы:

<com.imgspa.listviewadapter.CustomTextView 
     android:id="@+id/ed" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      listviewadapter:textColor="#FF0000"/> 

     <com.imgspa.listviewadapter.CustomTextView 
      android:id="@+id/edRis" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="35dp" /> 

Первой пользовательских textview текст красный, второй черный

Смежные вопросы