南瓜收割机吧 关注:38贴子:3,160
  • 16回复贴,共1

Android开发——基础组件及布局设计

只看楼主收藏回复

1. FrameLayout
布局特点:放入其中的所有元素都被放置在最左上的区域,而且无法为这些元素指定一个确切的位置,下一个子元素会重叠覆盖上一个子元素
应用场景:适合浏览单张图片。
2. LinearLayout
布局特点:放主要提供控件水平或者垂直排列的模型,每个子组件
都是以垂直或水平的方式来线性排布.(默认是垂直)
linearLayout中有一个重要的属性 android:layout_weight="1",这个weight在垂直布局时,代表行距;水平的时候代表列宽;weight值越大就越大。
3. AbsoluteLayout
布局特点:采用坐标轴的方式定位组件,左上角是(0,0)点,往右x轴递增,往下Y轴递增,组件定位属性为android:layout_x和 android:layout_y来确定坐标。
4. RelativeLayout
布局特点:为某一个组件为参照物,来定位下一个组件的位置的布局方式。
5. TableLayout
布局特点:类似Html里的Table.使用TableRow来布局,其中TableRow代表一行,TableRow的每一个视图组件代表一个单元格。


IP属地:上海1楼2022-05-03 11:10回复
    以上代码是对文件activity_main.xml的修改


    IP属地:上海7楼2022-05-03 11:13
    回复
      Widget组件


      IP属地:上海8楼2022-05-03 11:13
      回复
        包括对按钮、文本框、编辑框、多选控件、单项选择控件、自动完成文本控件、日期选择控件、时间选择控件的使用


        IP属地:上海9楼2022-05-03 11:14
        回复
          吞我代码是吧


          IP属地:上海14楼2022-05-03 11:18
          回复
            1.文本框
            MainActivity.java:
            package com.example.phone2;
            import androidx.appcompat.app.AppCompatActivity;
            import android.graphics.Color;
            import android.graphics.Typeface;
            import android.widget.TextView;
            import android.os.Bundle;
            public class MainActivity extends AppCompatActivity {
            @Override
            protected void onCreate(BundlesavedInstancestate) {
            super.onCreate(savedInstancestate);
            setContentView(R.layout.activity_main);
            TextView tvMessagel = (TextView)findViewById(R.id.tv_message1);
            TextView tvMessage2 = (TextView)findViewById(R.id.tv_message2);
            tvMessagel.setTextSize(18.0f);
            tvMessagel.setTypeface(null,Typeface.BOLD);
            tvMessagel.setTextColor(Color.BLUE);
            tvMessage2.setText("\nEditText 是Textview的子类");
            tvMessage2.setTextColor(Color.RED);
            }
            }
            activity_main.xml:
            <?xml version="1.0"encoding="utf-8"?>
            <LinearLayoutxmlns:android="网址/apk/res/android"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingLeft="10dp"
            android:paddingTop="10dp">
            <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/tv_message1"
            android:text="TextView通常用于在Activity上显示文字"
            android:textColor="#ff00ff"
            android:textStyle="italic"
            android:gravity="center_horizontal"/>
            <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/tv_message2"
            android:textSize="25sp"
            android:textStyle="bold|italic"
            android:text=""/>
            </LinearLayout>


            IP属地:上海15楼2022-05-03 11:19
            回复
              2.编辑框
              MainActivity.java:
              package com.example.phone2;
              import androidx.appcompat.app.AppCompatActivity;
              import android.os.Bundle;
              import android.view.KeyEvent;
              import android.view.View;
              import android.widget.EditText;
              import android.widget.TextView;
              public class MainActivity extends AppCompatActivity {
              TextView tvOut;
              EditText txtInput;
              @Override
              protected void onCreate(BundlesavedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
              tvOut = (TextView) findViewById(R.id.tv_out);
              txtInput = (EditText)findViewById(R.id.text_input);
              txtInput.setOnKeyListener(newView.OnKeyListener() {
              @Override
              public boolean onKey(Viewview, int i, KeyEvent keyEvent) {
              tvOut.setText("您输入的密码是:"+txtInput.getText().toString());
              return false;
              }
              });
              }
              }
              activity_main.xml:
              <?xml version="1.0"encoding="utf-8"?>
              <LinearLayout xmlns:android="网址/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:paddingLeft="10dp"
              android:paddingTop="10dp">
              <TextView
              android:id="@+id/tv_message"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:text="请输入密码:"
              android:textSize="20sp"/>
              <EditText
              android:id="@+id/text_input"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:inputType="textPassword"
              android:hint="请在此处输入密码:"
              android:textSize="18sp"/>
              <TextView
              android:id="@+id/tv_out"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:textSize="20sp"
              android:textColor="#000000"/>
              </LinearLayout>


              IP属地:上海16楼2022-05-03 11:20
              回复
                4.单选按钮
                MainActivity.java:
                package com.example.phone2;
                import android.os.Bundle;
                import android.widget.RadioGroup;
                import android.widget.RadioGroup.OnCheckedChangeListener;
                import android.widget.RadioButton;
                import android.widget.TextView;
                import androidx.appcompat.app.AppCompatActivity;
                public class MainActivity extends AppCompatActivity {
                RadioButton rb1, rb2, rb3;
                RadioGroup rg;
                TextView tvResult;
                @Override
                protected void onCreate(BundlesavedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                tvResult = (TextView)findViewById(R.id.tv_result);
                rb1 = (RadioButton) findViewById(R.id.rbt_classical);//通过ID找到CheckBox
                rb2 = (RadioButton)findViewById(R.id.rbt_novel);
                rb3 = (RadioButton)findViewById(R.id.rbt_essays);
                rg = (RadioGroup)findViewById(R.id.favor);
                //rg.check(R.id.rbt_essays); //效果相同
                rb3.setChecked(true); //设置“散文随笔”为选中状态
                tvResult.setText("\n您感兴趣的图书:" + rb3.getText().toString());
                rg.setOnCheckedChangeListener(cBoxListener);//对CheckBox进行监听
                }
                private OnCheckedChangeListenercBoxListener = new OnCheckedChangeListener() {
                @Override
                public voidonCheckedChanged(RadioGroup group, int checkedId) {
                if (R.id.rbt_classical ==checkedId) {
                tvResult.setText("\n您感兴趣的图书:" +rb1.getText().toString());
                setTitle(String.valueOf(rb1.getText()));
                } else if (R.id.rbt_novel ==checkedId) {
                tvResult.setText("\n您感兴趣的图书:" + rb2.getText().toString());
                setTitle(String.valueOf(rb2.getText()));
                } else if (R.id.rbt_essays== checkedId) {
                tvResult.setText("\n您感兴趣的图书:" + rb3.getText().toString());
                }
                }
                };
                }
                activity_main.xml:
                <?xml version="1.0"encoding="utf-8"?>
                <LinearLayout xmlns:android="网址/apk/res/android"
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingLeft="10dp"
                android:paddingTop="10dp"
                >
                <TextView
                android:id="@+id/favourite_label"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="20sp"
                android:text="请选择一个您感兴趣的图书类别" />
                <RadioGroup
                android:id="@+id/favor"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >
                <RadioButton
                android:id="@+id/rbt_classical"
                android:checked="true"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="古典文学" />
                <!--设置android:checked 属性值为"true",将该选项设置为选中状态-->
                <RadioButton
                android:id="@+id/rbt_novel"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="当代小说" />
                <RadioButton
                android:id="@+id/rbt_essays"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="散文随笔" />
                </RadioGroup>
                <TextView
                android:id="@+id/tv_result"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textColor="#0000ff"
                android:textSize="17sp"
                android:text="\n您感兴趣的图书:古典文学" />
                </LinearLayout>


                IP属地:上海18楼2022-05-03 11:21
                回复
                  6.日期选择控件
                  MainActivity.java:
                  package com.example.phone2;
                  import android.app.DatePickerDialog;
                  import android.os.Bundle;
                  import android.view.View;
                  import android.widget.DatePicker;
                  import android.widget.Toast;
                  import androidx.appcompat.app.AppCompatActivity;
                  import java.util.Calendar;
                  public class MainActivity extends AppCompatActivity {
                  @Override
                  protected void onCreate(BundlesavedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.activity_main);
                  }
                  public void onclick(View v) {
                  Calendar calendar = Calendar.getInstance();
                  new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener(){
                  public voidonDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                  String text = "你选择了:" + year + "年" + (month + 1) + "月" + dayOfMonth + "日";
                  Toast.makeText(MainActivity.this,text, Toast.LENGTH_SHORT).show();
                  }
                  }
                  , calendar.get(Calendar.YEAR)
                  , calendar.get(Calendar.MONTH)
                  , calendar.get(Calendar.DAY_OF_MONTH)).show();
                  }
                  }
                  activity_main.xml:
                  <?xml version="1.0"encoding="utf-8"?>
                  <LinearLayoutxmlns:android="网址/apk/res/android"
                  android:orientation="vertical"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  >
                  <Button
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="日期选择"
                  android:onClick="onclick"/>
                  </LinearLayout>


                  IP属地:上海20楼2022-05-03 11:23
                  回复
                    7.时间选择控件
                    MainActivity.java:
                    package com.example.phone2;
                    import android.app.TimePickerDialog;
                    import android.os.Bundle;
                    import android.view.View;
                    import android.widget.TimePicker;
                    import android.widget.Toast;
                    import androidx.appcompat.app.AppCompatActivity;
                    import java.util.Calendar;
                    public class MainActivity extends AppCompatActivity {
                    @Override
                    protected void onCreate(BundlesavedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_main);
                    }
                    public void onclick(View v){
                    Calendar calendar=Calendar.getInstance();
                    new TimePickerDialog( this, newTimePickerDialog.OnTimeSetListener() {
                    @Override
                    public voidonTimeSet(TimePicker view, int hourOfDay, int minute) {
                    String text="你选择了"+hourOfDay+"时"+minute+"分";
                    Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT ).show();
                    }
                    }
                    ,calendar.get(Calendar.HOUR_OF_DAY)
                    ,calendar.get(Calendar.MINUTE),true).show();
                    }
                    }
                    activity_main.xml:
                    <?xml version="1.0"encoding="utf-8"?>
                    <LinearLayoutxmlns:android="网址/apk/res/android"
                    android:orientation="vertical"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    >
                    <Button
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="时间选择"
                    android:onClick="onclick"/>
                    </LinearLayout>


                    IP属地:上海21楼2022-05-03 11:24
                    回复
                      5.多选按钮
                      MainActivity.java:
                      package com.example.phone2;
                      import androidx.appcompat.app.AppCompatActivity;
                      import android.os.Bundle;
                      import android.widget.CheckBox;
                      import android.widget.CompoundButton;
                      import android.widget.CompoundButton.OnCheckedChangeListener;
                      import android.widget.TextView;
                      public class MainActivity extends AppCompatActivity {
                      CheckBox cbox1, cbox2, cbox3;
                      TextView tvResult;
                      String myResults = "";
                      @Override
                      protected void onCreate(BundlesavedInstanceState) {
                      super.onCreate(savedInstanceState);
                      setContentView(R.layout.activity_main);
                      cbox1 = (CheckBox)findViewById(R.id.cbox_classical);//通过ID找到CheckBox
                      cbox2 = (CheckBox)findViewById(R.id.cbox_novel);
                      cbox3 = (CheckBox)findViewById(R.id.cbox_essays);
                      //cbox3.setChecked(true); //设置“散文随笔”为选中状态
                      cbox1.setOnCheckedChangeListener(cBoxListener);//对CheckBox进行监听
                      cbox2.setOnCheckedChangeListener(cBoxListener);
                      cbox3.setOnCheckedChangeListener(cBoxListener);
                      tvResult = (TextView)findViewById(R.id.tv_result);
                      }
                      private OnCheckedChangeListenercBoxListener = new OnCheckedChangeListener() {
                      @Override
                      public voidonCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                      myResults = "\n您感兴趣的图书:";
                      if (cbox1.isChecked()) { //如果第一个复选框处于选中状态
                      myResults = myResults +" " +cbox1.getText().toString();
                      }
                      if (cbox2.isChecked()) { //如果第二个复选框处于选中状态
                      myResults = myResults +" " +cbox2.getText().toString();
                      }
                      if (cbox3.isChecked()) { //如果第三个复选框处于选中状态
                      myResults = myResults +" " +cbox3.getText().toString();
                      }
                      tvResult.setText(myResults); //将选中的信息显示在TextView对象中
                      }
                      };
                      }
                      activity_main.xml:
                      <?xml version="1.0"encoding="utf-8"?>
                      <LinearLayoutxmlns:android="网址/apk/res/android"
                      android:orientation="vertical"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      android:paddingLeft="10dp"
                      android:paddingTop="10dp"
                      >
                      <TextView
                      android:id="@+id/favourite_label"
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:textSize="20sp"
                      android:text="请勾选您感兴趣的图书类别" />
                      <CheckBox
                      android:id="@+id/cbox_classical"
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:checked="true"
                      android:textSize="20sp"
                      android:text="古典文学" />
                      <!--设置android:checked 属性值为"true",将该“古典文学”选项设置为选中状态-->
                      <CheckBox
                      android:id="@+id/cbox_novel"
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:textSize="20sp"
                      android:text="当代小说" />
                      <CheckBox
                      android:id="@+id/cbox_essays"
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:textSize="20sp"
                      android:text="散文随笔" />
                      <TextView
                      android:id="@+id/tv_result"
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:textColor="#0000ff"
                      android:textSize="17sp"
                      android:text="\n您感兴趣的图书:古典文学" />
                      </LinearLayout>


                      IP属地:上海22楼2022-05-03 11:24
                      回复
                        3.自动完成文本
                        /res/values/arrays.xml:
                        <?xml version="1.0"encoding="utf-8"?>
                        <resources>
                        <string-arrayname="autoStrings">
                        <item>北京大学</item>
                        <item>北京交通大学</item>
                        <item>北京天安门</item>
                        <item>北京理工大学</item>
                        <item>北方天气</item>
                        <item>南方航空</item>
                        <item>南方航空公司</item>
                        <item>aaa南方航空公司</item>
                        <item>abb南方航空公司</item>
                        <item>aabb南方航空公司</item>
                        <item>aaccc南方航空公司</item>
                        </string-array>
                        </resources>
                        res/layout/list_item.xml:
                        <?xml version="1.0"encoding="utf-8"?>
                        <TextViewxmlns:android="*/apk/res/android"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:padding="10dp"
                        android:textSize="18sp"
                        android:textColor="#0000ff">
                        </TextView>
                        MainActivity.java:
                        package com.example.phone2;
                        import android.os.Bundle;
                        import android.widget.ArrayAdapter;
                        import android.widget.AutoCompleteTextView;
                        import androidx.appcompat.app.AppCompatActivity;
                        public class MainActivity extends AppCompatActivity {
                        @Override
                        protected void onCreate(BundlesavedInstanceState) {
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.activity_main);
                        //创建适配器
                        ArrayAdapter<String>adapter = new ArrayAdapter<String>(this,R.layout.list_item,getResources().getStringArray(R.array.autoStrings));
                        AutoCompleteTextView textView =(AutoCompleteTextView) findViewById(R.id.autoComplete);
                        textView.setAdapter(adapter); //为AutoCompleteTextView对象设置适配器
                        }
                        }
                        activity_main.xml:
                        <?xml version="1.0"encoding="utf-8"?>
                        <LinearLayout xmlns:android="*/apk/res/android"
                        xmlns:tools="*/tools"
                        android:id="@+id/activity_main"
                        android:orientation="vertical"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:paddingBottom="16dp"
                        android:paddingLeft="16dp"
                        android:paddingRight="16dp"
                        android:paddingTop="16dp"
                        tools:context="com.example.test_1.MainActivity">
                        <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="自动提示文本输入框示例:" />
                        <AutoCompleteTextView
                        android:id="@+id/autoComplete"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"/>
                        </LinearLayout>


                        IP属地:上海25楼2022-05-03 11:27
                        回复
                          感觉......不如物理


                          IP属地:北京来自Android客户端26楼2022-05-04 13:05
                          回复
                            楼主这个是ecplise写的吗


                            IP属地:北京来自Android客户端27楼2022-05-27 01:24
                            收起回复