我正在使用此代码将字体应用于我的布局中的所有视图:
var mainLayout = FindViewById<RelativeLayout>(Resource.Id.mainLayout);
for (int i = 0; i < mainLayout.ChildCount - 1; i++)
{
if (mainLayout.GetChildAt(i) is TextView)
{
((TextView)mainLayout.GetChildAt(i)).SetTypeface(tf, TypefaceStyle.Bold);
}
else if (mainLayout.GetChildAt(i) is EditText)
{
((EditText)mainLayout.GetChildAt(i)).SetTypeface(tf, TypefaceStyle.Bold);
}
else if (mainLayout.GetChildAt(i) is Button)
{
((Button)mainLayout.GetChildAt(i)).SetTypeface(tf, TypefaceStyle.Bold);
}
}
布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_pattern"
android:id="@+id/mainLayout"
>
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="25dp"
android:contentDescription="@string/content_dexcription_logo"
android:src="@drawable/ic_launcher" />
<TextView
android:id="@+id/title"
style="@style/AuthTitle" />
<TextView
android:id="@+id/subtitle"
style="@style/AuthTitle.AuthSubtitle" />
<LinearLayout
android:id="@+id/editTextLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/subtitle"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:layout_marginTop="@dimen/login_vertical_margin"
android:background="@drawable/login_box_radius"
android:orientation="vertical"
android:paddingBottom="@dimen/login_vertical_margin"
android:paddingLeft="@dimen/login_horizental_padding"
android:paddingRight="@dimen/login_horizental_padding"
android:paddingTop="@dimen/login_vertical_margin">
<EditText
android:id="@+id/usernameField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/username_hint"
android:textColorHighlight="@color/light_gray"
android:textSize="17sp">
<requestFocus />
</EditText>
<EditText
android:id="@+id/passwordField"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:ems="10"
android:hint="@string/password_hint"
android:inputType="textPassword"
android:textColorHighlight="@color/light_gray"
android:gravity="right"
android:textSize="17sp" />
<Button
android:text="Login"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/btnLogin" />
</LinearLayout>
</RelativeLayout>
但是,它仅适用于TextView
s
有什么想法吗?
答案 0 :(得分:1)
您需要循环ViewGroups本身的子项。目前你的代码只是忽略它们。
此外,无需检查它的Button或EditText,因为它们都扩展了TextView,因此它足以检查它是否是TextView的一个实例。
这是普通java / android中的一个例子:
递归方法:
public void loopViewGroup(ViewGroup viewGroup) {
for (int i=0; i<viewGroup.getChildCount(); i++) {
View child = viewGroup.getChildAt(i);
if (child instanceof TextView) {
// Extends TextView (EditText, Button etc.)
((TextView) child).setTypeface(tf, TypefaceStyle.Bold);
} else if (child instanceof ViewGroup) {
// Is a ViewGroup (layout)
loopViewGroup((ViewGroup) child);
}
}
}
启动这样的方法:
loopViewGroup(findViewById(R.id.mainLayout));