Android Studio 预览中的字体已更改,但设备中未更改
Font gets changed in Android Studio preview but not in the device
我创建了一个应用于 TextView
的样式。它按我的意愿出现在 Android Studio 预览中,但在设备上却有所不同。我能做什么?
这是XML代码:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
style="@style/smalltextstyle"
android:text="text here "
/>
</ScrollView>
这是我的风格代码:
<style name="smalltextstyle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
<item name="android:textAlignment" tools:targetApi="jelly_bean_mr1">center</item>
<item name="android:textSize">23sp</item>
<item name="android:textColor">#000</item>
<item name="android:textStyle">bold</item>
必须如此
这就是显示的内容
在下面 class 使用这个作为你的 customTextview 并在 assets 文件夹中下载你的字体
xml
例如:
<com.yourpackagename.font.MyTextView
android:id="@+id/text_phone_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/text_phone_number"
android:textColor="@color/colorDarkAsh_opacity"
android:layout_marginTop="20dp"
android:layout_marginStart="10dp"
android:textSize="12sp"/>
Class
public class MyTextView extends AppCompatTextView {
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyTextView(Context context) {
super(context);
init();
}
private void init() {
if (!isInEditMode()) {
Typeface tf;
switch (getTypeface().getStyle()) {
case Typeface.BOLD:
tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/AvenirLTMedium.otf");
break;
case Typeface.ITALIC:
tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/AvenirLTBookOblique.otf");
break;
case Typeface.BOLD_ITALIC:
tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/AvenirLTMediumOblique.otf");
break;
case Typeface.NORMAL:
tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/AvenirBook.otf");
break;
default:
tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/AvenirBook.otf");
break;
}
setTypeface(tf);
}
}
}
我创建了一个应用于 TextView
的样式。它按我的意愿出现在 Android Studio 预览中,但在设备上却有所不同。我能做什么?
这是XML代码:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
style="@style/smalltextstyle"
android:text="text here "
/>
</ScrollView>
这是我的风格代码:
<style name="smalltextstyle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
<item name="android:textAlignment" tools:targetApi="jelly_bean_mr1">center</item>
<item name="android:textSize">23sp</item>
<item name="android:textColor">#000</item>
<item name="android:textStyle">bold</item>
必须如此
这就是显示的内容
在下面 class 使用这个作为你的 customTextview 并在 assets 文件夹中下载你的字体
xml
例如:
<com.yourpackagename.font.MyTextView
android:id="@+id/text_phone_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/text_phone_number"
android:textColor="@color/colorDarkAsh_opacity"
android:layout_marginTop="20dp"
android:layout_marginStart="10dp"
android:textSize="12sp"/>
Class
public class MyTextView extends AppCompatTextView {
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyTextView(Context context) {
super(context);
init();
}
private void init() {
if (!isInEditMode()) {
Typeface tf;
switch (getTypeface().getStyle()) {
case Typeface.BOLD:
tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/AvenirLTMedium.otf");
break;
case Typeface.ITALIC:
tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/AvenirLTBookOblique.otf");
break;
case Typeface.BOLD_ITALIC:
tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/AvenirLTMediumOblique.otf");
break;
case Typeface.NORMAL:
tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/AvenirBook.otf");
break;
default:
tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/AvenirBook.otf");
break;
}
setTypeface(tf);
}
}
}