Android:设置ALIGN_PARENT_RIGHT不起作用

时间:2013-11-25 11:00:36

标签: android layout alignment

我尝试创建一个应用程序,用户可以为大型设备设置“单手布局”,只用一只手输入数字。 (参见图片我的意思)

enter image description here

当我按下“L”时,布局向左转。这很有效。 但在此之后,当我按下L时,布局不会移动。 我不明白为什么......你能解释一下我做错了吗?

按钮“L”:

Button cmd_change = (Button) findViewById(R.id.cmd_changesite);

cmd_change.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Log.v("TEST: ", ""+shellpreference.getInt("CHANGESITE", 0));
        if(sharedpreference.getInt("CHANGESITE", 0) == 0){

            RelativeLayout relativeLayout= (RelativeLayout)findViewById(R.id.rl_changesite);
            RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)relativeLayout.getLayoutParams();

            params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
            relativeLayout.setLayoutParams(params);
            sharedpreference.setInt("CHANGESITE", 1);
        }else{
            RelativeLayout relativeLayout= (RelativeLayout)findViewById(R.id.rl_changesite);
            RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)relativeLayout.getLayoutParams();

            params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
            relativeLayout.setLayoutParams(params);
            sharedpreference.setInt("CHANGESITE", 0);
        }

    }
}); 

布局XML:

<?xml version="1.0" encoding="utf-8"?>
<!-- Einstellung des Gesamtlayouts -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginBottom="5dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="5dp"
    android:background="@drawable/bg1200x800"
    android:orientation="vertical" >

    <!-- Anzeige txt_standardsaetze -->


    <!-- Einbindung Scoll Funktion -->

    <RelativeLayout
        android:id="@+id/rl_betraege"
        android:layout_width="wrap_content"
        android:layout_height="180dp"
        android:layout_alignParentLeft="true" >

        <RelativeLayout
            android:id="@+id/relativeLayout5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_marginBottom="10dp" >

            <RelativeLayout
                android:id="@+id/relativeLayout4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentRight="true"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="10dp" >

                <TextView
                    android:id="@+id/txt_netto_desc"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Netto"
                    android:textSize="18dip" />

                <TextView
                    android:id="@+id/TextView05"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:text=".-"
                    android:textSize="18dip" />

                <TextView
                    android:id="@+id/txt_nettobetrag"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_toLeftOf="@+id/TextView05"
                    android:text="0.00"
                    android:textSize="18dip" />
            </RelativeLayout>

            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="wrap_content"
                android:layout_height="1dp"
                android:layout_alignParentLeft="true"
                android:layout_below="@+id/relativeLayout4"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="3dp"
                android:background="@drawable/line"
                android:src="@drawable/line" />

            <RelativeLayout
                android:id="@+id/RelativeLayout02"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/imageView2"
                android:layout_marginTop="10dp" >

                <TextView
                    android:id="@+id/txt_steuer_desc"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:text="Steuer"
                    android:textSize="18dip" />

                <TextView
                    android:id="@+id/TextView07"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:layout_marginRight="10dp"
                    android:text=".-"
                    android:textSize="18dip" />

                <TextView
                    android:id="@+id/txt_steuerbetrag"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_toLeftOf="@+id/TextView07"
                    android:text="0.00"
                    android:textSize="18dip" />
            </RelativeLayout>

            <ImageView
                android:id="@+id/ImageView01"
                android:layout_width="wrap_content"
                android:layout_height="1dp"
                android:layout_alignParentLeft="true"
                android:layout_below="@+id/RelativeLayout02"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="3dp"
                android:background="@drawable/line"
                android:src="@drawable/line" />

            <RelativeLayout
                android:id="@+id/RelativeLayout03"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/ImageView01"
                android:layout_marginTop="10dp" >

                <TextView
                    android:id="@+id/txt_bruttodesc"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:text="Brutto"
                    android:textSize="18dip"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/TextView10"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:layout_marginRight="10dp"
                    android:text=".-"
                    android:textSize="18dip"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/txt_bruttobetrag"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_toLeftOf="@+id/TextView10"
                    android:text="0.00"
                    android:textSize="18dip"
                    android:textStyle="bold" />
            </RelativeLayout>

            <ImageView
                android:id="@+id/ImageView02"
                android:layout_width="wrap_content"
                android:layout_height="1dp"
                android:layout_alignParentLeft="true"
                android:layout_below="@+id/RelativeLayout03"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="3dp"
                android:background="@drawable/line"
                android:src="@drawable/line" />

            <ImageView
                android:id="@+id/ImageView04"
                android:layout_width="wrap_content"
                android:layout_height="1dp"
                android:layout_below="@+id/ImageView02"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="1dp"
                android:background="@drawable/line"
                android:src="@drawable/line" />
        </RelativeLayout>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/relativeLayout5"
            android:layout_alignParentLeft="true" >

            <ImageView
                android:id="@+id/ImageView03"
                android:layout_width="wrap_content"
                android:layout_height="1dp"
                android:layout_alignParentBottom="true"
                android:background="@drawable/line"
                android:src="@drawable/line" />

            <TextView
                android:id="@+id/company"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:layout_marginLeft="10dp"
                android:text="Eingabe:"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/TextView03"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_marginRight="10dp"
                android:gravity="right"
                android:text=".-"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <TextView
                android:id="@+id/edit_betrag"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignTop="@+id/company"
                android:layout_centerVertical="true"
                android:layout_toLeftOf="@+id/TextView03"
                android:gravity="right"
                android:text="-"
                android:textAppearance="?android:attr/textAppearanceMedium" />

        </RelativeLayout>

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rl_steuern"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/rl_betraege"
        android:layout_alignRight="@+id/rl_betraege"
        android:layout_below="@+id/rl_betraege"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="5dp" >

        <Spinner
            android:id="@+id/spinner_steuer"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_toRightOf="@+id/TextView01" />

        <TextView
            android:id="@+id/TextView01"
            android:layout_width="70dp"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:text="Steuer:"
            android:textSize="18dip" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rl_eingabeart"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/rl_steuern"
        android:layout_alignRight="@+id/rl_steuern"
        android:layout_below="@+id/rl_steuern" >

        <TextView
            android:id="@+id/TextView02"
            android:layout_width="70dp"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:text="Eingabe:"
            android:textSize="18dip" />

        <RadioGroup
            android:id="@+id/radiogrp_netbrut"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_toRightOf="@+id/TextView02"
            android:orientation="horizontal" >

            <RadioButton
                android:id="@+id/radiobutton_netto"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="true"
                android:text="@string/netto_calc_"
                android:textSize="18dip" />

            <RadioButton
                android:id="@+id/radiobutton_brutto"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/brutto_calc_"
                android:textSize="18dip" />
        </RadioGroup>
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rl_parent_changesite"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/rl_eingabeart"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp" >

        <RelativeLayout
            android:id="@+id/rl_changesite"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/cmd_1"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_alignBaseline="@+id/cmd_2"
                android:layout_alignBottom="@+id/cmd_2"
                android:layout_marginRight="2dp"
                android:layout_marginTop="2dp"
                android:layout_toLeftOf="@+id/cmd_2"
                android:background="@drawable/zahlen"
                android:text="1"
                android:textSize="25dp" />

            <Button
                android:id="@+id/cmd_4"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_above="@+id/cmd_2"
                android:layout_marginRight="2dp"
                android:layout_marginTop="2dp"
                android:layout_toLeftOf="@+id/cmd_2"
                android:background="@drawable/zahlen"
                android:text="4"
                android:textSize="25dp" />

            <Button
                android:id="@+id/cmd_8"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_alignBaseline="@+id/cmd_7"
                android:layout_alignBottom="@+id/cmd_7"
                android:layout_toLeftOf="@+id/cmd_6"
                android:background="@drawable/zahlen"
                android:text="8"
                android:layout_marginRight="2dp"
                android:layout_marginTop="2dp"
                android:textSize="25dp" />

            <Button
                android:id="@+id/cmd_0"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:layout_marginRight="2dp"
                android:layout_marginTop="2dp"
                android:background="@drawable/zahlen"
                android:text="0"
                android:textSize="25dp" />

            <Button
                android:id="@+id/cmd_7"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_above="@+id/cmd_4"
                android:layout_toLeftOf="@+id/cmd_2"
                android:background="@drawable/zahlen"
                android:text="7"
                android:layout_marginRight="2dp"
                android:layout_marginTop="2dp"
                android:textSize="25dp" />

            <Button
                android:id="@+id/cmd_5"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_above="@+id/cmd_2"
                android:layout_alignLeft="@+id/cmd_2"
                android:layout_marginRight="2dp"
                android:layout_marginTop="2dp"
                android:background="@drawable/zahlen"
                android:text="5"
                android:textSize="25dp" />

            <Button
                android:id="@+id/cmd_point"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_alignLeft="@+id/cmd_2"
                android:layout_alignParentBottom="true"
                android:layout_marginRight="2dp"
                android:layout_marginTop="2dp"
                android:background="@drawable/zahlen"
                android:text="."
                android:textSize="25dp" />

            <Button
                android:id="@+id/cmd_back_betrag"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_alignParentBottom="true"
                android:layout_marginRight="2dp"
                android:layout_marginTop="2dp"
                android:layout_toRightOf="@+id/cmd_point"
                android:background="@drawable/zahlen"
                android:text="&lt;-"
                android:textSize="25dp" />

            <Button
                android:id="@+id/cmd_clear"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_alignParentBottom="true"
                android:layout_marginTop="2dp"
                android:layout_toRightOf="@+id/cmd_back_betrag"
                android:background="@drawable/zahlen"
                android:text="C"
                android:textSize="25dp"
                android:textStyle="bold" />

            <Button
                android:id="@+id/cmd_percent"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_above="@+id/cmd_back_betrag"
                android:layout_marginTop="2dp"
                android:layout_toRightOf="@+id/cmd_back_betrag"
                android:background="@drawable/zahlen"
                android:text="%"
                android:textSize="25dp"
                android:textStyle="bold" />

            <Button
                android:id="@+id/cmd_3"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_above="@+id/cmd_back_betrag"
                android:layout_marginRight="2dp"
                android:layout_marginTop="2dp"
                android:layout_toLeftOf="@+id/cmd_clear"
                android:background="@drawable/zahlen"
                android:text="3"
                android:textSize="25dp" />

            <Button
                android:id="@+id/cmd_6"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_above="@+id/cmd_percent"
                android:layout_marginRight="2dp"
                android:layout_marginTop="2dp"
                android:layout_toLeftOf="@+id/cmd_percent"
                android:background="@drawable/zahlen"
                android:text="6"
                android:textSize="25dp" />

            <Button
                android:id="@+id/cmd_9"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_above="@+id/cmd_5"
                android:layout_toRightOf="@+id/cmd_8"
                android:background="@drawable/zahlen"
                android:text="9"
                android:layout_marginRight="2dp"
                android:layout_marginTop="2dp"
                android:textSize="25dp" />

            <Button
                android:id="@+id/cmd_changesite"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_above="@+id/cmd_percent"
                android:layout_alignLeft="@+id/cmd_percent"
                android:layout_marginTop="2dp"
                android:background="@drawable/zahlen"
                android:text="L"
                android:textSize="25dp" />

            <Button
                android:id="@+id/cmd_2"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_above="@+id/cmd_clear"
                android:layout_marginRight="2dp"
                android:layout_marginTop="2dp"
                android:layout_toRightOf="@+id/cmd_0"
                android:background="@drawable/zahlen"
                android:text="2"
                android:textSize="25dp" />

        </RelativeLayout>

    </RelativeLayout>

</RelativeLayout>

2 个答案:

答案 0 :(得分:5)

问题在于父布局。它设置为wrap_content

将父RelativeLayout的宽度更改为match_parent,最有可能解决问题。

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/RelativeLayout01" >

更新了答案

除此之外,问题在于,当偏好在01之间变回0时,您永远不会删除之前分配的{ {1}}。 (你只能打电话给rule)。这就是问题,因为现在它同时包含params.addRule(..)ALIGN_PARENT_RIGHT

要解决此问题,您可以使用removeRule()方法:

ALIGN_PARENT_LEFT

此方法仅受if(sharedpreference.getInt("CHANGESITE", 0) == 0){ RelativeLayout relativeLayout= (RelativeLayout)findViewById(R.id.rl_changesite); RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)relativeLayout.getLayoutParams(); params.removeRule(RelativeLayout.ALIGN_PARENT_RIGHT); params.addRule(RelativeLayout.ALIGN_PARENT_LEFT); relativeLayout.setLayoutParams(params); sharedpreference.setInt("CHANGESITE", 1); } else { RelativeLayout relativeLayout= (RelativeLayout)findViewById(R.id.rl_changesite); RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)relativeLayout.getLayoutParams(); params.removeRule(RelativeLayout.ALIGN_PARENT_LEFT); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); relativeLayout.setLayoutParams(params); sharedpreference.setInt("CHANGESITE", 0); }

支持

对于较低版本,只需创建一个新的布局参数并将其分配给API LEVEL 17 (JELLY_BEAN_MR1),如下所示:

RelativeLayout

注意:对于方法2,您必须以编程方式从XML文件中添加其他规则,因为每次都会创建一个新的布局参数实例,因此不再应用XML中定义的那些规则。

答案 1 :(得分:0)

我认为您忘记将更改提交到共享偏好设置:

sharedpreference.setInt("CHANGESITE", 0);

你还需要做

sharedpreference.commit() 

这将对共享首选项进行实际保存。