Я отслеживаю очень странное поведение. Одна часть моего макета производит следующие кнопки:
Это соответствующий макет:
<TableLayout
android:id="@+id/mainscreenButtonbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom"
android:gravity="bottom"
android:stretchColumns="*" >
<TextView
android:id="@+id/statusBar"
style="@style/StatusBarStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/connecting" />
<TableRow
style="@style/ButtonStyle">
<Button
android:id="@+id/btnReport"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/blitzerMelden"
android:textSize="18sp" />
<Button
android:id="@+id/btnConfigurations"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/bundeslaender"
android:textSize="18sp" />
</TableRow>
</TableLayout>
Вот используемые стили:
<style name="ButtonStyle">
<item name="android:background">#212121</item>
</style>
<style name="StatusBarStyle">
<item name="android:textSize">11sp</item>
<item name="android:background">#212121</item>
<item name="android:padding">2sp</item>
</style>
Теперь, что-то странное происходит, если и только если эта активность переходит в фоновый режим (нажав ДОМОЙ) и будет возобновлена. Внезапно текст кнопки изменяется сверху вниз:
Я не понимаю, почему это происходит. Это не зависит от textView. Когда я опускаю TextView, поведение такое же. Когда я использую LinearLayout (без этого TextView) вместо этого TableLayout, поведение корректно и текст не меняется:
<LinearLayout
android:id="@+id/mainscreenButtonbar"
style="@style/ButtonStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_alignParentBottom="true"
android:gravity="bottom"
android:stretchColumns="*" >
<Button
android:id="@+id/btnReport"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/blitzerMelden"
android:textSize="18sp" />
<Button
android:id="@+id/btnConfigurations"
android:layout_width="0sp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/bundeslaender"
android:textSize="18sp" />
</LinearLayout>
Так что это неправильное поведение так или иначе относится к TableLayout, но как? Есть идеи?
ОБНОВЛЕНИЕ
Хотя он не делает ничего особенного для кнопок, которые я добавляю в код активности onResume (я сказал, что это происходит только тогда, когда активность будет возобновлена, но только если я выйду из нее, нажав HOME раньше. между различными действиями или если я даже запускаю приложение из нового, проблема не появляется.)
@Override
protected void onResume() {
super.onResume();
setConnectionText(getString(R.string.connecting));
messageTable.removeAllViewsInLayout();
Log.d(TAG, "> executing onResume");
try {
Log.d(TAG, "> reading config data");
stateStates = dataProvider.getConfigData();
}
catch (PolizeiwarnungException e) {
Toast toast = Toast.makeText(this, "Fehler: " + e.getMessage(), 4000);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.show();
}
try {
String receivedJsonString = httpConnector.receiveData();
HashMap<String, ArrayList<String>> messages = jsonParser.jsonStringToMessageMap(receivedJsonString);
for (Map.Entry<String, Boolean> state : stateStates.entrySet()) {
buildMessageTable(state.getKey(), state.getValue(), messages);
}
}
catch (PolizeiwarnungException e) {
setConnectionText(getString(R.string.dataDownloadFailed));
addTextToTable(getConnectionText());
}
TableRow tableRow = new TableRow(this);
InvisibleButton invisibleButton = new InvisibleButton(this);
tableRow.addView(invisibleButton);
messageTable.addView(tableRow);
}
(buildMessageTable добавляет полученные данные в TableLayout выше, так что это не влияет на эту проблему)