简体   繁体   English

如何动态创建相对布局

[英]How to create Relative layout Dynamicaly

I want to generate the relative layout dynamically So that i can repeat the data as much as many times i get data from the server .The layout id that i want to create dynamically are depart_flight_details_duration , passenger_details_layout .How could create them in a loop so that it will be repeated more than one .Please help me on this i am new in android. 我想动态生成相对布局,以便我可以重复从服务器获取数据的次数。我要动态创建的布局ID是depart_flight_details_durationpassenger_details_layout在循环中创建它们,以便它将重复不止一个。请对此提供帮助,我是Android新手。

XML XML格式

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/imgLogo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="5dip"
        android:padding="3dip"
        android:src="@drawable/logo_demo" />

    <ScrollView
        android:id="@+id/main_scroll_view"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/imgLogo" >

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

            <RelativeLayout
                android:id="@+id/trip_details_main"
                android:layout_width="fill_parent"
                android:layout_height="70dp"
                android:background="@drawable/flight_detail"
                android:gravity="center_vertical" >

                <TextView
                    android:id="@+id/trip_locations"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_marginLeft="5dp"
                    android:text="Delhi to Hydrabad"
                    android:textColor="#FFFFFF"
                    android:textSize="20sp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/depart_date"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/trip_locations"
                    android:layout_marginLeft="5dp"
                    android:text="18 Sep 2013"
                    android:textColor="#FFFFFF"
                    android:textSize="15sp" />

                <ImageView
                    android:id="@+id/imgRight"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_marginTop="12dp"
                    android:src="@drawable/cal" />
            </RelativeLayout>

            <RelativeLayout
                android:id="@+id/travel_itin_header"
                android:layout_width="fill_parent"
                android:layout_height="40dp"
                android:layout_below="@+id/trip_details_main"
                android:layout_marginTop="2dp"
                android:background="@drawable/gray"
                android:gravity="center_vertical" >

                <TextView
                    android:id="@+id/itinerary_text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_marginLeft="90dp"
                    android:layout_marginTop="5dp"
                    android:text="Itinerary Details"
                    android:textColor="#FFFFFF"
                    android:textSize="15sp"
                    android:textStyle="bold" />
            </RelativeLayout>

            <RelativeLayout
                android:id="@+id/passenger_details_layout"
                android:layout_width="fill_parent"
                android:layout_height="40dp"
                android:layout_below="@+id/travel_itin_header"
                android:layout_marginTop="2dp"
                android:background="@drawable/gray"
                android:gravity="center_vertical" >

                <ImageView
                    android:id="@+id/pax_image"
                    android:layout_width="wrap_content"
                    android:layout_height="50dip"
                    android:layout_alignParentLeft="true"
                    android:padding="3dip"
                    android:src="@drawable/black_man" />

                <TextView
                    android:id="@+id/first_pax_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignTop="@+id/pax_image"
                    android:layout_marginLeft="12dp"
                    android:layout_marginTop="10dp"
                    android:layout_toRightOf="@+id/pax_image"
                    android:text=" XXX XXX XXX"
                    android:textColor="#FFFFFF"
                    android:textSize="15sp"
                    android:textStyle="bold" />

                <ImageView
                    android:id="@+id/imgRight"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignBottom="@+id/first_pax_name"
                    android:layout_alignParentRight="true"
                    android:src="@drawable/arrow2" />
            </RelativeLayout>

            <RelativeLayout
                android:id="@+id/depart_flight_details_duration"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_below="@+id/passenger_details_layout"
                android:layout_marginTop="2dp"
                android:background="@drawable/small_search" >

                <ImageView
                    android:id="@+id/flight_depart_image"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true"
                    android:padding="3dip"
                    android:src="@drawable/dep" />

                <TextView
                    android:id="@+id/depart_return_location"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignTop="@+id/flight_depart_image"
                    android:layout_marginLeft="12dp"
                    android:layout_marginTop="10dp"
                    android:layout_toLeftOf="@+id/arrow_image"
                    android:layout_toRightOf="@+id/flight_depart_image"
                    android:text="Delhi to Hydrabad"
                    android:textColor="#FFFFFF"
                    android:textSize="15sp"
                    android:textStyle="bold" />

                <TextView
                    android:id="@+id/one_way_date_and_duration_details"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/depart_return_location"
                    android:layout_marginLeft="12dp"
                    android:layout_toRightOf="@+id/flight_depart_image"
                    android:text="18 Sep 2013 09:45 | Duration 2:45"
                    android:textColor="#FFFFFF"
                    android:textSize="12sp" />

                <ImageView
                    android:id="@+id/arrow_image"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignBottom="@+id/depart_return_location"
                    android:layout_alignParentRight="true"
                    android:layout_marginTop="10dp"
                    android:src="@drawable/arrow2" />
            </RelativeLayout>

            <RelativeLayout
                android:id="@+id/travel_agency_header"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/depart_flight_details_duration"
                android:layout_marginTop="2dp"
                android:background="@drawable/travelagency_bg" >

                <TextView
                    android:id="@+id/travel_agency_text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_marginLeft="10dp"
                    android:layout_marginTop="5dp"
                    android:text="Travel Agency"
                    android:textColor="#676767"
                    android:textSize="15sp"
                    android:textStyle="bold" />
            </RelativeLayout>

            <RelativeLayout
                android:id="@+id/tarvel_agency_details"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/travel_agency_header"
                android:layout_marginTop="2dp" >

                <ImageView
                    android:id="@+id/agent_logo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:src="@drawable/logo" />

                <ImageView
                    android:id="@+id/mobile_logo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="8dp"
                    android:layout_marginTop="10dp"
                    android:layout_toRightOf="@+id/agent_logo"
                    android:src="@drawable/mobile" />

                <ImageView
                    android:id="@+id/at_logo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:layout_marginTop="10dp"
                    android:layout_toRightOf="@+id/mobile_logo"
                    android:src="@drawable/at" />

                <ImageView
                    android:id="@+id/email_logo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:layout_marginTop="10dp"
                    android:layout_toRightOf="@+id/at_logo"
                    android:src="@drawable/at" />

                <TextView
                    android:id="@+id/travel_agency_address"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/agent_logo"
                    android:layout_marginLeft="5dp"
                    android:text="Address : XXXXXXXX"
                    android:textColor="#676767" />

                <TextView
                    android:id="@+id/travel_agency_fax"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/travel_agency_address"
                    android:layout_marginLeft="5dp"
                    android:layout_marginTop="2dp"
                    android:text="Fax : XXXXXXXX"
                    android:textColor="#676767" />
            </RelativeLayout>

            <RelativeLayout
                android:id="@+id/genral_remarks_header"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tarvel_agency_details"
                android:layout_marginTop="2dp"
                android:background="@drawable/general_remar" >

                <TextView
                    android:id="@+id/genral_remark_header_text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_marginLeft="10dp"
                    android:layout_marginTop="5dp"
                    android:text="Genral Remarks"
                    android:textColor="#676767"
                    android:textSize="15sp"
                    android:textStyle="bold" />
            </RelativeLayout>

            <RelativeLayout
                android:id="@+id/genral_remark_text_layout"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/genral_remarks_header"
                android:layout_marginTop="2dp" >

                <TextView
                    android:id="@+id/genral_remark_text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:gravity="center_vertical"
                    android:text="HAVE A NICE TRIP"
                    android:textColor="#676767" />
            </RelativeLayout>
        </RelativeLayout>
    </ScrollView>

</RelativeLayout>

You have to use custom listview. 您必须使用自定义listview。

And for two listview in one layout see this link Link 对于一个布局中的两个列表视图,请参见此链接

A Simple Program for LayoutInflater from here 这里开始 LayoutInflater的简单程序

a-make this layout as your activity_main.xml- 将这个布局作为您的activity_main.xml-

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
 </LinearLayout>

b-this is the hidden layout which we will add dynamically,save it as hidden_layout.xml b-这是我们将动态添加的隐藏布局,另存为hidden_​​layout.xml

<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/hidden_layout"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical">

<TextView  
     android:id="@+id/text_view"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="Hello, this is the inflated text of hidden layout"/>

<EditText  
     android:id="@+id/edit_text"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="Hello, this is your name"/>
</LineraLayout>

c- Now this is the code for main activity- c-现在这是主要活动的代码-

public class MainActivity extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

for(int i=0;i<numberOfRows;i++){
LinearLayout main = (LinearLayout)findViewById(R.id.main_layout);
        View view = getLayoutInflater().inflate(R.layout.hidden_layout, main,false);
        main.addView(view);
}
}

 }
RelativeLayout mDisplayBlock = (RelativeLayout)
     LayoutInflater.from(getActivity()).inflate(
     depart_flight_details_duration, null);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

    mDisplayBlock.setLayoutParams(params);

you can add this layout to your main scroll view 您可以将此布局添加到主滚动视图

main_scroll_view_layout.addView(mDisplayBlock); 

just put this code at appropriate place in your code. 只需将此代码放在代码中的适当位置即可。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM