Programming/Android

앱을 만들다 보면 ScrollView 안에 RecyclerView를 사용할 때가 있다.

 

예를 들면, 커뮤니티에서 사용하는 게시판이 있다.

그런데 ScrollView 안에 RecylcerView를 사용하게 되면

ScrollView의 스크롤 

RecyclerView의 스크롤이 따로따로 다 움직이게 된다.

 

이를 해결하기 위해서는 

ScrollView를 NestedScrollView로 사용하면 된다

 

<androidx.core.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

        <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/recyclerView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>

    </LinearLayout>

</androidx.core.widget.NestedScrollView>

먼저 기존에 있는 타이틀을 제거 해야한다

 

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);

 

그후 xml 에서

 

 <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@null"
        android:theme="?attr/actionBarTheme"
        app:titleTextAppearance="@style/ToolbarTitleText" >

        <TextView
            android:id="@+id/textView28"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Toolbar Title"
            android:layout_gravity="center"
            android:textColor="#000000"
            android:textSize="15dp"
            android:textStyle="bold" />
    </androidx.appcompat.widget.Toolbar>

 

여기서 중요한것은 TextView 의 android:layout_width 를 wrap_content로 해주는것과

android:layout_gravity="center" 로 지정하는것이다

 

안드로이드 툴바에서 툴바 왼쪽에 뒤로가기 버튼 만들기

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

setDisplayHomeAsUpEnabled() ---> True 시 왼쪽에 뒤로가기 버튼 생성

 

뒤로가기 버튼 클릭

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home :
                finish();
        }
        return super.onOptionsItemSelected(item);
    }

 

추가하기

 

뒤로가기 버튼 ID 는 android.R.id.home 이다.

AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setCancelable(false);

AlertDialog 에 setCancelable(false) 지정

 

true 이면 외부화면 클릭, 뒤로가기 클릭 허용

false 이면 비허용

적용시키려는 Activity에 작성

long time = 0;



@Override
    public void onBackPressed() {
        if(System.currentTimeMillis()-time>=1000){
            time=System.currentTimeMillis();
            Toast.makeText(getApplicationContext(),"뒤로 가기 버튼을 한 번 더 누르면 종료됩니다.", Toast.LENGTH_SHORT).show();
        }else if(System.currentTimeMillis()-time<1000){ // 뒤로 가기 한번 더 눌렀을때의 시간간격 텀이 1초
            finishAffinity();
            System.runFinalization();
            System.exit(0);
        }
    }

 

레이아웃에 클릭리스너를 등록하면 레이아웃에 속한 뷰중 가장 하위뷰에 적용된다.

 

우리가 원하는 전체레이아웃을 클릭했을때 사용하게 하려면

레이아웃에 속한 하위 뷰들에게 아래 속성추가하면 완료.

 

 

src\main\res\xml\network_security_config.xml

 

<?xml version="1.0" encoding="utf-8"?>

<network-security-config>

<domain-config cleartextTrafficPermitted="true">

<domain includeSubdomains="true">your domain or ip address</domain>

</domain-config>

</network-security-config>

 

xml 파일 추가하여 서버 ip , domain 등록하기

 

AndroidManifest.xml

 

android:networkSecurityConfig="@xml/network_security_config"

 

안드로이드 Manifest에 자신이 추가한 xml를 android:networkSecurityConfig에 등록하기

Theme 를 적용시키고 싶은 Fragment.Java 에 추가하기

 

R.style.ChipTheme -> 자신의 Theme 적용

EditText의 속성 inputType 을 "멀티라인" 으로 변경

자동 줄바꿈 필요시

속성 추가

"True" 일시 엔터 사용시에만 줄바꿈 가능

API 21 이상부터 Ripple Effect 제공

 

눌림(클릭) 효과를 넣고 싶은 View 의 Background 에

추가 하기

 

//

android:background="?attr/selectableItemBackgroundBorderless" 

사용시 부모의 View 까지 효과가 퍼져나간다.

//

 

눌림 효과 색상은 

Style - Theme 에서 colorControlHighlight 를 통해서 변경가능.

 

API 21 이하 버전에서 사용시 물결 효과 없이 회색 배경으로 클릭효과가 나타남.

+ Recent posts