편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2020.06.18

    안드로이드 LinearLayout for 문을 이용한 동적생성 코드 질문합니다


    365일의 버튼을 만들어서 1년치 달력을 만드는 프로그램을 만들고있는데, 일주일별로 Layout을 설정해주다보니 노가다식 코딩을 하게되면 코딩이 너무 길어져서 for문을 사용한 배열을 써봤는데 어플 실행이 되지 않고 강제 종료됩니다. XML과 Java코드 첨부 하겠습니다.

    ===============JAVA===========

    package com.example.myapplication;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.graphics.Color;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuInflater;
    import android.view.MotionEvent;
    import android.view.View;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.ScrollView;
    import android.widget.TextView;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
    
        ScrollView scrollView;
        LinearLayout Cal1;
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            super.onCreateOptionsMenu(menu);
            MenuInflater mInflater = getMenuInflater();
            mInflater.inflate(R.menu.menu1, menu);
            return true;
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Cal1 = (LinearLayout)findViewById(R.id.calendar1);
            LinearLayout linear[] = new LinearLayout[54];
    
    
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.WRAP_CONTENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT);
            params.weight = 1;
    
            final Button btn[] = new Button[368];
            for (int i = 0; i < 368; i++) {
                btn[i] = new Button(this);
                btn[i].setWidth(20);
                btn[i].setTextSize(11);
                btn[i].setBackgroundColor(Color.WHITE);
                btn[i].setId(i);
            }
    
            for (int i = 0; i<7; i++){
                for(int j =1; j<54; j++){
                    linear[i] = new LinearLayout(this);
                    linear[j].addView(btn[i + ((j-1) * 7)],params);
                    linear[i].addView(btn[i], params);
                    Cal1.addView(linear[i]);
                }
            }
    
            for (int i = 0; i < 3; i++) {
                btn[i].setText("");
    
            }
            for (int i = 3; i < 7; i++) {
                btn[i].setText("" + (i - 2));
    
            }
            for (int i = 7; i < 14; i++) {
                btn[i].setText("" + (i - 2));
    
            }
    
            for (int i = 14; i < 21; i++) {
                btn[i].setText("" + (i - 2));
    
            }
    
            for (int i = 21; i < 28; i++) {
                btn[i].setText("" + (i - 2));
    
            }
            for (int i = 28; i < 32; i++) {
                btn[i].setText("" + (i - 2));
    
            }
            for (int i = 32; i < 34; i++){
                btn[i].setText(""+ (i - 2));
    
            }
            for (int i = 34; i < 35; i++){
                btn[i].setText("");
    
            } //1월
            for (int i = 35; i < 41; i++) {
                btn[i].setText("" );
    
            }
            for (int i = 41; i < 42; i++) {
                btn[i].setText("" + (i - 40));
    
            }
            for (int i = 42; i < 49; i++) {
                btn[i].setText("" + (i - 40));
    
            }
    
            for (int i = 49; i < 56; i++) {
                btn[i].setText("" + (i - 40));
    
            }
    
            for (int i = 56; i < 63; i++) {
                btn[i].setText("" + (i - 40));
    
            }
            for (int i = 63; i < 70; i++) {
                btn[i].setText("" + (i - 40));
    
            }//2월
        }
    }
    

    ==================XML=====================

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:context=".MainActivity"
        android:orientation="vertical">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:animateLayoutChanges="true"
            android:background="#000"
            android:orientation="horizontal">
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="10dp"
                android:text="2020년 Scroll 달력"
                android:textSize="20dp"
                android:textColor="#FFF"/>
    
            <Button
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:text="오늘"/>
            <Button
                android:layout_width="80dp"
                android:layout_height="wrap_content"
                android:text="보기 방식"/>
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:background="#000"
            android:orientation="horizontal">
            <TextView
                android:layout_width="match_parent"
                android:layout_height="30dp"
                android:textSize="20dp"
                android:text="1월"
                android:textColor="#fff">
            </TextView>
    
        </LinearLayout>
    
        <!--요일-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="20dp"
            android:gravity="top"
            android:background="#eaeae9"
            android:orientation="horizontal">
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="일"
                android:textSize="9sp"
                android:textColor="#FF0000" />
    
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="월"
                android:textColor="#000000"
                android:textSize="9sp" />
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="화"
                android:textColor="#000000"
                android:textSize="9sp" />
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="수"
                android:textColor="#000000"
                android:textSize="9sp" />
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="목"
                android:textColor="#000000"
                android:textSize="9sp" />
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="금"
                android:textColor="#000000"
                android:textSize="9sp" />
    
            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
    
                android:text="토"
                android:textSize="9sp"
                android:textColor="#0067a3"/>
    
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/calendar1"
            android:orientation="horizontal">
        </LinearLayout>
    
    
    </LinearLayout>
    
    
  • 프로필 알 수 없는 사용자님의 편집
    날짜2020.06.18

    안드로이드 LinearLayout for 코드 질문합니다


    365일의 버튼을 만들어서 1년치 달력을 만드는 프로그램을 만들고있는데, 일주일별로 Layout을 설정해주다보니 노가다식 코딩을 하게되면 코딩이 너무 길어져서 for문을 사용한 배열을 써봤는데 어플 실행이 되지 않고 강제 종료됩니다. XML과 Java코드 첨부 하겠습니다.

    ===============JAVA===========

    package com.example.myapplication;

    import androidx.appcompat.app.AppCompatActivity;

    import android.graphics.Color; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MotionEvent; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TextView; import android.widget.Toast;

    public class MainActivity extends AppCompatActivity {

    ScrollView scrollView;
    LinearLayout Cal1;
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        MenuInflater mInflater = getMenuInflater();
        mInflater.inflate(R.menu.menu1, menu);
        return true;
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        Cal1 = (LinearLayout)findViewById(R.id.calendar1);
        LinearLayout linear[] = new LinearLayout[54];
    
    
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
        params.weight = 1;
    
        final Button btn[] = new Button[368];
        for (int i = 0; i < 368; i++) {
            btn[i] = new Button(this);
            btn[i].setWidth(20);
            btn[i].setTextSize(11);
            btn[i].setBackgroundColor(Color.WHITE);
            btn[i].setId(i);
        }
    
        for (int i = 0; i<7; i++){
            for(int j =1; j<54; j++){
                linear[i] = new LinearLayout(this);
                linear[j].addView(btn[i + ((j-1) * 7)],params);
                linear[i].addView(btn[i], params);
                Cal1.addView(linear[i]);
            }
        }
    
        for (int i = 0; i < 3; i++) {
            btn[i].setText("");
    
        }
        for (int i = 3; i < 7; i++) {
            btn[i].setText("" + (i - 2));
    
        }
        for (int i = 7; i < 14; i++) {
            btn[i].setText("" + (i - 2));
    
        }
    
        for (int i = 14; i < 21; i++) {
            btn[i].setText("" + (i - 2));
    
        }
    
        for (int i = 21; i < 28; i++) {
            btn[i].setText("" + (i - 2));
    
        }
        for (int i = 28; i < 32; i++) {
            btn[i].setText("" + (i - 2));
    
        }
        for (int i = 32; i < 34; i++){
            btn[i].setText(""+ (i - 2));
    
        }
        for (int i = 34; i < 35; i++){
            btn[i].setText("");
    
        } //1월
        for (int i = 35; i < 41; i++) {
            btn[i].setText("" );
    
        }
        for (int i = 41; i < 42; i++) {
            btn[i].setText("" + (i - 40));
    
        }
        for (int i = 42; i < 49; i++) {
            btn[i].setText("" + (i - 40));
    
        }
    
        for (int i = 49; i < 56; i++) {
            btn[i].setText("" + (i - 40));
    
        }
    
        for (int i = 56; i < 63; i++) {
            btn[i].setText("" + (i - 40));
    
        }
        for (int i = 63; i < 70; i++) {
            btn[i].setText("" + (i - 40));
    
        }//2월
    }
    

    }

    ==================XML=====================

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:animateLayoutChanges="true"
        android:background="#000"
        android:orientation="horizontal">
    
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:padding="10dp"
            android:text="2020년 Scroll 달력"
            android:textSize="20dp"
            android:textColor="#FFF"/>
    
        <Button
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            android:text="오늘"/>
        <Button
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            android:text="보기 방식"/>
    </LinearLayout>
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#000"
        android:orientation="horizontal">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:textSize="20dp"
            android:text="1월"
            android:textColor="#fff">
        </TextView>
    
    </LinearLayout>
    
    <!--요일-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:gravity="top"
        android:background="#eaeae9"
        android:orientation="horizontal">
    
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="일"
            android:textSize="9sp"
            android:textColor="#FF0000" />
    
    
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="월"
            android:textColor="#000000"
            android:textSize="9sp" />
    
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="화"
            android:textColor="#000000"
            android:textSize="9sp" />
    
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="수"
            android:textColor="#000000"
            android:textSize="9sp" />
    
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="목"
            android:textColor="#000000"
            android:textSize="9sp" />
    
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="금"
            android:textColor="#000000"
            android:textSize="9sp" />
    
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
    
            android:text="토"
            android:textSize="9sp"
            android:textColor="#0067a3"/>
    
    </LinearLayout>
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/calendar1"
        android:orientation="horizontal">
    </LinearLayout>