按钮layout_alignParentRight在第一个循环中不起作用?

时间:2014-01-12 09:18:12

标签: java android button

我动态添加了viewflipper,并在每个视图中添加了多个视图,其中一个是包含两个按钮的RelativeLayer - 一个在图层右侧的左侧。

它适用于所有循环,但不适用于第一个循环,其中两个按钮在左侧的另一个上面保持一个。 任何有帮助建议的人都会赞赏。

LayoutInflater inflater = LayoutInflater.from(this);
ViewGroup parent = (ViewGroup) findViewById(R.id.slider_holder);



for (int i = 0; i < temp.length; i++) {

ViewGroup np = (ViewGroup) findViewById(R.id.nexpre);
LinearLayout l=(LinearLayout) inflater.inflate(R.layout.flipper_slides, parent, false);

RelativeLayout next_prev =(RelativeLayout) inflater.inflate(R.layout.next_prev, l, false);


for (int k = 0; k< temp1.length; k++) { 
ViewGroup nested_parent = (ViewGroup) findViewById(R.id.nested_slider_holder);  
LinearLayout nl=(LinearLayout) inflater.inflate(R.layout.nested_flipper_slides, nested_parent, false);

TextView temp_tv1 =(TextView) inflater.inflate(R.layout.nested_flipper_tv, nl, false);

temp_tv1.setText(temp[i]+" "+temp1[k]);
nl.addView(temp_tv1);
ff.addView(nl); 

}

next_prev.addView(nested_prev);
next_prev.addView(nested_next);

l.addView(ff);
l.addView(next_prev);
f.addView(l);
}

这是next_prev.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/nexpre"
    android:layout_width="match_parent"
    android:layout_height="50dip"
    android:layout_marginTop="-50dip" >

</RelativeLayout>

这是nested_prev.xml

<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:text="Prev" >

</Button>

这是nested_next.xml

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

<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:text="Next" >

</Button>

1 个答案:

答案 0 :(得分:0)

问题是,在第一个循环中,应该一直向右移动的按钮没有。对于所有其他循环之后的第一个工作但不适用于第一个循环。

我在代码中添加了这一行:

    if(i==0){

        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE); 
        next_prev.getChildAt(1).setLayoutParams(params);
    }

对于第一个循环我以编程方式“ALIGN PARENT RIGHT”使用布局参数。

无论如何,如果有人能够解释为什么第一个循环的行为与其他循环不同的原因,我将不胜感激。