【问题标题】:Layout alignment of spinner and TextView in LinearLayout programmatically androidLinearLayout中微调器和TextView的布局对齐以编程方式android
【发布时间】:2016-05-17 10:56:11
【问题描述】:

我想实现如下图所示的布局...示例 -spinner1 然后 text1 然后换行 spinner2 然后 text2 等等....一切都很好,我只是想要正确安排布局。我附上了我想要的图像,并且当前与代码一起显示。

我想要下图这样的布局

但目前它的显示如下-

Bookdetails.java

public class Bookdetails extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.bookdetails);


        final ArrayList<String> spinnerArray = new ArrayList<String>();
        spinnerArray.add("Yes");
        spinnerArray.add("No");


        final String seat1 = getIntent().getExtras().getString("seat1");
        final String seat2 = getIntent().getExtras().getString("seat2");
        final String seat3 = getIntent().getExtras().getString("seat3");
        final String seat4 = getIntent().getExtras().getString("seat4");
        final String seat5 = getIntent().getExtras().getString("seat5");
        final String seat6 = getIntent().getExtras().getString("seat6");
        Log.i("seats", seat1+seat2+seat3+seat4+seat5+seat6);
        Toast toast = Toast.makeText(this, seat1+seat2+seat3+seat4+seat5+seat6, Toast.LENGTH_LONG);
        toast.show();

        final int N = 6; 

        final TextView[] myTextViews = new TextView[N]; 
        LinearLayout ll = (LinearLayout) findViewById(R.id.layout);
        //setContentView(ll);
        if(!(seat1==null)){
            final TextView rowTextView = new TextView(this);
            rowTextView.setText("Seat selected" + seat1);
            ll.addView(rowTextView);

            //<------------------------------------------------------------------------------>
            Spinner spinner = new Spinner(this);
            ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
            spinner.setAdapter(spinnerArrayAdapter);
            spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub

                    Toast.makeText(getBaseContext(), spinnerArray.get(arg2).toString()+""+seat1, 
                            Toast.LENGTH_SHORT).show();
                }

                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub

                }
            });
            ll.addView(spinner);

            //<------------------------------------------------------------------------------>
        }
        if(!(seat2==null)){
            final TextView rowTextView = new TextView(this);
            rowTextView.setText("Seat selected" + seat2);
            ll.addView(rowTextView);
            //<------------------------------------------------------------------------------>
            Spinner spinner = new Spinner(this);
            ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
            spinner.setAdapter(spinnerArrayAdapter);
            spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub

                    Toast.makeText(getBaseContext(), spinnerArray.get(arg2).toString()+""+seat2, 
                            Toast.LENGTH_SHORT).show();
                }

                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub

                }
            });
            ll.addView(spinner);

            //<------------------------------------------------------------------------------>

        }
        if(!(seat3==null)){
            final TextView rowTextView = new TextView(this);
            rowTextView.setText("Seat selected" + seat3 );
            ll.addView(rowTextView);
            //<------------------------------------------------------------------------------>
            Spinner spinner = new Spinner(this);
            ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
            spinner.setAdapter(spinnerArrayAdapter);
            spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub

                    Toast.makeText(getBaseContext(), spinnerArray.get(arg2).toString()+""+seat3, 
                            Toast.LENGTH_SHORT).show();
                }

                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub

                }
            });
            ll.addView(spinner);

            //<------------------------------------------------------------------------------>
        }
        if(!(seat4==null)){
            final TextView rowTextView = new TextView(this);
            rowTextView.setText("Seat selected"+ seat4  );
            ll.addView(rowTextView);
            //<------------------------------------------------------------------------------>
            Spinner spinner = new Spinner(this);
            ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
            spinner.setAdapter(spinnerArrayAdapter);
            spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub

                    Toast.makeText(getBaseContext(), spinnerArray.get(arg2).toString()+""+seat4, 
                            Toast.LENGTH_SHORT).show();
                }

                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub

                }
            });
            ll.addView(spinner);

            //<------------------------------------------------------------------------------>
        }
        if(!(seat5==null)){
            final TextView rowTextView = new TextView(this);
            rowTextView.setText("Seat selected"+ seat5  );
            ll.addView(rowTextView);
            //<------------------------------------------------------------------------------>
            Spinner spinner = new Spinner(this);
            ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
            spinner.setAdapter(spinnerArrayAdapter);
            spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub

                    Toast.makeText(getBaseContext(), spinnerArray.get(arg2).toString()+""+seat5, 
                            Toast.LENGTH_SHORT).show();
                }

                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub

                }
            });
            ll.addView(spinner);

            //<------------------------------------------------------------------------------>
        }
        if(!(seat6==null)){
            final TextView rowTextView = new TextView(this);
            rowTextView.setText("Seat selected"+ seat6  );
            ll.addView(rowTextView);
            //<------------------------------------------------------------------------------>
            Spinner spinner = new Spinner(this);
            ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
            spinner.setAdapter(spinnerArrayAdapter);
            spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub

                    Toast.makeText(getBaseContext(), spinnerArray.get(arg2).toString()+""+seat6, 
                            Toast.LENGTH_SHORT).show();
                }

                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub

                }
            });
            ll.addView(spinner);

            //<------------------------------------------------------------------------------>
        }

    }
}

bookdetails.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <LinearLayout
        android:id="@+id/layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >


    </LinearLayout>

</LinearLayout>

【问题讨论】:

    标签: java android android-linearlayout android-spinner android-xml


    【解决方案1】:

    如果您的数据是动态的,则使用 listView 和 spinner,textview 作为 xml 文件中的列表项。

    同样从上一个活动到下一个活动,将数据作为可打包数组列表传递。这会有所帮助..

    【讨论】:

    • 数据和所有内容都是正确的,我在布局中需要帮助查看我正在获取的图像输出,并在我上传的图片中查看我想要的内容。
    • 您的布局方向是垂直的,将其设置为水平将解决此问题。
    • 为水平方向的不同座位创建不同的布局,并将所有这些添加到您的 xml 布局中。
    【解决方案2】:

    创建一个水平方向的Linearlayout,其中包含一个微调器和文本视图。

    然后扩展该布局,而不是以编程方式创建 Spinner

    LinearLayout layout = layoutInflater.inflate(R.layout.your_layout, parent, false);
    ll.addView(layout);
    

    更新

    if(seat1!=null){
            LinearLayout customLayout = (LinearLayout)layoutInflater.inflate(R.id.customLayout, ll, false)
            final TextView rowTextView = (TextView)customLayout.findViewById(R.id.textView)
            rowTextView.setText("Seat selected" + seat1);
            //<------------------------------------------------------------------------------>
            Spinner spinner = (Spinner)customLayout.findViewById(R.id.spinner);
            ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
            spinner.setAdapter(spinnerArrayAdapter);
            spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub
    
                    Toast.makeText(getBaseContext(), spinnerArray.get(arg2).toString()+""+seat1, 
                            Toast.LENGTH_SHORT).show();
                }
    
                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub
    
                }
            });
            ll.addView(customLayout);
    }
    

    【讨论】:

    • 只更新了第一个条件的代码,其余的你可以自己做。这很容易:)
    • 它没有发生..它显示..类型不匹配:无法从 View 转换为 LinearLayout
    • 我已经更新了代码。检查第二行,将其转换为 LinearLayout。
    【解决方案3】:

    对于每个

    if(!(seat1==null)){
    }
    

    执行以下操作

            final TextView rowTextView = new TextView(this);
            rowTextView.setText("Seat selected" + seat1);
    
            //<------------------------------------------------------------------------------>
            Spinner spinner = new Spinner(this);
            ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
            spinner.setAdapter(spinnerArrayAdapter);
            spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {
                    // TODO Auto-generated method stub
    
                    Toast.makeText(getBaseContext(), spinnerArray.get(arg2).toString()+""+seat1, 
                            Toast.LENGTH_SHORT).show();
                }
    
                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub
    
                }
            });
    
            LinearLayout linearLayout = new LinearLayout(this);
            linearLayout.setOrientation(LinearLayout.HORIZONTAL);
            linearLayout.addView(spinner);
            linearLayout.addView(rowTextView);
            ll.addView(linearLayout);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      相关资源
      最近更新 更多