请参阅以下[[UINavigationBar appearanceWhenContainedIn:[ABPeoplePickerNavigationController class], nil] setBarTintColor:[UIColor yourColor]];
[[UIBarButtonItem appearanceWhenContainedIn:[ABPeoplePickerNavigationController class], nil] setTintColor:[UIColor yourColor]];
[[UINavigationBar appearanceWhenContainedIn:[ABPeoplePickerNavigationController class], nil] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor yourColor], NSFontAttributeName : [UIFont yourFont]}]; //navigation bar title
[[UISearchBar appearanceWhenContainedIn:[ABPeoplePickerNavigationController class], nil] setBarTintColor:[UIColor yourColor]];
[[UITableView appearanceWhenContainedIn:[ABPeoplePickerNavigationController class], nil] setSectionIndexColor:[UIColor yourColor]];
[[UITableViewHeaderFooterView appearanceWhenContainedIn:[ABPeoplePickerNavigationController class], nil] setTintColor:yourColor];
:
Activity
布局public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.root);
for (int i = 0; i < 8; i++) {
EditText editText = (EditText) LayoutInflater.from(this).inflate(R.layout.edittextlayout, null);
editText.setText("#" + i);
linearLayout.addView(editText);
}
}
}
:
R.layout.activity_main
和布局<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
</LinearLayout>
:
R.layout.edittext_layout
启动应用后,看起来我希望:每个<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
都填充了它的索引。
旋转设备后,EditText
如下所示:
所有Activity
都在那里,但它们都包含相同的文字。
更令我感到困惑的是,在使用
以编程方式创建EditText
时,不会发生
EditText
而不是从布局中充气。
那里发生了什么?
您可以查看我的示例并亲自尝试here。
编辑:这不是this question的重复,因为在我的情况下,EditText editText = new EditText(this)
中的文字不会翻倍但会在不同EditText
之间混淆第
答案 0 :(得分:4)
尝试为每个View设置一些ID。
例如:
view.setId(id);
或使用
onSaveInstanceState() - onRestoreInstanceState()
用于保存信息。
答案 1 :(得分:0)
问题是您的活动会在每个方向上重新创建,并且Android处理的实例数据处理错误。您可以通过为动态创建的视图设置ID来避免它,也可以 覆盖onSaveInstanceState方法以保存您的edittexts中的文本数据,并在onCreate方法上恢复它,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Check if we're recreating
if (savedInstanceState != null) {
// Restore value of edittext from saved state
editText.setText(savedInstanceState.getString("edittext"));
}
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putString("edittext", editText.getText().toString());
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
如果在执行此操作后遇到类似问题,请尝试覆盖onRestoreInstanceState方法以防止android执行您的工作。
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
//do nothing
}