我有一个简单的活动布局,它有一个imageview和几个文本框。我已将所有字体设置为Helvetica Light,并且还为每个框指定了颜色。在IDE中,我看到了这些元素所需的颜色/字体,但是当我在Android手机上构建并启动应用程序时,没有应用任何样式...所有颜色都是默认的黑色,字体也是默认的android字体。
我错过了任何房产吗?请帮忙!谢谢!
ActivityScreen.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fontFamily="Helvetica Light" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="150dp"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="62dp"
android:scaleType="fitXY"
android:src="@drawable/whitelogoshort"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:fontFamily="Helvetica Light"
android:text="Hello"
android:textColorLink="@color/grey"
android:textSize="23sp"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="88dp"
android:fontFamily="Helvetica Light"
android:text="Swipe to continue"
android:textColorHint="@color/lightgrey"
android:textColorLink="@color/lightgrey"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView1"
android:layout_centerHorizontal="true"
android:layout_marginTop="14dp"
android:fontFamily="Helvetica Light"
android:text="Hello again"
android:textColorLink="@color/grey"
android:textSize="18sp"
tools:ignore="HardcodedText" />
</RelativeLayout>
背后的课程如下:
public class WelcomeScreen extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activityscreen);
}
}
THEME在manifest.xml文件中设置为:
android:theme="@android:style/Theme.Light.NoTitleBar"
作为应用程序标记的一部分。
为什么我运行应用程序时没有应用我的字体样式?
谢谢!
答案 0 :(得分:1)
只需在根布局上调用此函数即可应用onCreate()中的字体。它以递归方式查找textview的每个实例并更改字体。我假设您的字体文件位于名为“font”的子文件夹中的assets文件夹中。跳过组只允许您跳过任何你不想要的组ID,所以如果你想跳过一个linearlayout然后传入数组列表R.id.mylinearlayout ...但是在你的情况下你想要做整个布局所以只为passgroups传入null。
public void applyFonts(final ViewGroup root, final String fontName,
final ArrayList<Integer> skipGroups, final Context context) {
if (skipGroups != null && skipGroups.contains(root.getId())) {
return;
}
final int childCount = root.getChildCount();
for (int i = 0; i != childCount; ++i) {
final View child = root.getChildAt(i);
if (child instanceof TextView) {
Typeface font = Typeface.createFromAsset(context.getAssets(), "fonts/"+fontName);
((TextView) child).setTypeface(font);
}
if (child instanceof ViewGroup) {
applyFonts((ViewGroup) child, fontName,skipGroups, context);
}
}
答案 1 :(得分:0)
属性“fontFamily”仅用于API级别16及更高级别,您正在测试的设备的Android版本是什么?
要设置文字颜色,您需要使用android:textColor ="#somecolor"
答案 2 :(得分:0)
您不能将fontFamily
与字体名称一起使用。您需要使用setTypeface
方法以编程方式更改字体。