配置更改时,vies标签(带id)不会更改

时间:2014-01-20 13:40:30

标签: android

抱歉我的英文。

我有一些活动。

活动布局:

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/containerOfStandardFilters" />

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/containerOfMoreFilters" />


    </LinearLayout>

</ScrollView>

在活动代码中,我动态填充两个容器布局。目前我只填写containerOfStandardFilters

我用来夸大containerOfStandardFilters的内容的布局:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textSize="@dimen/textSizeOfFilterGroupTitle"
        android:text="@string/titleOfSortingGroup" />

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="@dimen/textSizeOfSortingGroupItems"
        android:text="@string/labelOfSortByDistanceCheckBox"
        android:id="@+id/sortByDistanceCheckBox" />

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="@dimen/textSizeOfSortingGroupItems"
        android:text="@string/labelOfSortByDiscountCheckBox"
        android:id="@+id/sortByDiscountCheckBox" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="@dimen/sizeBetweenFilterGroups" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textSize="@dimen/textSizeOfFilterGroupTitle"
        android:text="@string/titleOfPaymentMethodGroup"/>

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="@dimen/textSizeOfSortingGroupItems"
        android:text="@string/labelOfCashlessPaymentsCheckBox"
        android:id="@+id/cashlessPaymentsCheckBox" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="@dimen/sizeBetweenFilterGroups" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textSize="@dimen/textSizeOfFilterGroupTitle"
        android:text="@string/titleOfWorkingHoursGroup"/>

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="@dimen/textSizeOfSortingGroupItems"
        android:text="@string/labelOfWorksNowCheckBox"
        android:id="@+id/worksNowCheckBox" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="@dimen/sizeBetweenFilterGroups" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:textSize="@dimen/textSizeOfFilterGroupTitle"
        android:text="@string/titleOfDiscountTypeGroup" />

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="@dimen/textSizeOfSortingGroupItems"
        android:text="@string/labelOfBonusCheckBox"
        android:id="@+id/bonusCheckBox" />

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="@dimen/textSizeOfSortingGroupItems"
        android:text="@string/labelOfDiscountCheckBox"
        android:id="@+id/discountCheckBox" />

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="@dimen/textSizeOfSortingGroupItems"
        android:text="@string/labelOfCashBackCheckBox"
        android:id="@+id/cashBackCheckBox" />

</LinearLayout>

但如果我更改当前语言(通过“设置”)并返回过滤器活动(来自系统设置活动),则只有没有ID的视图才会更新标签。

如何解决我的问题?

1 个答案:

答案 0 :(得分:0)

抱歉我的英文。

最后我决定了这个问题如下。

我将每个View的{​​{1}}和text属性包含在具有相同id属性的FrameLayout中,并从每个id中删除id View

但事实上,找到View的代码变得更加复杂。

layout而不是使用:

<CheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/labelOfCheckBox"
    android:id="@+id/checkBox" />

我用:

<FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/checkBox" >

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/labelOfCheckBox" />

</FrameLayout>

找到包裹Views的代码:

public class MyActivity extends Activity {
    public View findWrappedView(int id) {
        ViewGroup container = (ViewGroup) findViewById(id);
        return container.getChildAt(0);
    }
}