如何在AndroidStudio中的其他LinearLayout中添加LinearLayout

时间:2015-08-20 14:28:45

标签: android view android-linearlayout

我有两个layout.xml,如

viewOne.xml和viewTwo.xml

然后

如何以编程方式在viewTwo.xml中添加viewOne.xml,如

viewone.addView(viewTwo);

但无论如何它都无法正常工作。

2 个答案:

答案 0 :(得分:3)

编程: 你可以使用LayoutInflater

spinnerStateList = (Spinner) findViewById(R.id.spinnerStateList);    
spinnerDistrictsList = (Spinner) findViewById(R.id.spinnerDistrictsList);
fillStateList();

public void fillStateList()
{

    states = manage_states.fetchAllStates(getApplicationContext()); 
    //add new element for select name
    states.add(0,new RowItem("-1", "Select State"));
    String[] spinnerArray = new String[states.size()];
    for(int i= 0;i<states.size();i++)
    {
        spinnerArray[i] = states.get(i).getName();
    }
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,spinnerArray);    
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerStateList.setAdapter(dataAdapter);
    spinnerStateList.setOnItemSelectedListener(new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> arg0,
                View arg1, int position, long arg3) {               
            String selectedStateID = states.get(position).getId();  
            fillDistrictsSelectionChangeState(selectedStateID);
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {


        }
    });
}

public void fillDistrictsSelectionChangeState(String selectedStateID)
    {
        if(selectedStateID.equalsIgnoreCase("-1"))
        {
            linearLayoutDistrictsList.setVisibility(LinearLayout.GONE);
            linearLayoutBlocksList.setVisibility(LinearLayout.GONE);
            linearLayoutPHCList.setVisibility(LinearLayout.GONE);
            linearLayoutSHCList.setVisibility(LinearLayout.GONE);
    }
    else
    {

        linearLayoutDistrictsList.setVisibility(LinearLayout.VISIBLE);   
        districts = manage_districts.fetchAllDistrictsByStateId(getApplicationContext(), selectedStateID);  
        //add new element for select name
        districts.add(0,new RowItem("-1", "Select District"));
        String[] spinnerArray = new String[districts.size()];
        for(int i= 0;i<districts.size();i++)
        {
            spinnerArray[i] = districts.get(i).getName();
        }
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,spinnerArray);
        dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerDistrictsList.setAdapter(dataAdapter);
        spinnerDistrictsList.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> arg0,
                    View arg1, int position, long arg3) {               
                String selectedDistrictID = districts.get(position).getId();    
                fillBlocksSelectionChangeDistrict(selectedDistrictID);
            }


            @Override
            public void onNothingSelected(AdapterView<?> arg0) {


            }
        });
    }
}

答案 1 :(得分:0)

View viewTwo = LayoutInflater.from(context).inflate(R.layout.view_two, viewOne); 

膨胀方法需要2个或更多参数 http://developer.android.com/reference/android/view/LayoutInflater.html