티스토리 뷰
액션바를 탭과 함께 보여주는 예제
1 2 3 | - 액션바에 가지는기능이상당히많다. - 액션바 하단에 탭버튼을 붙일 수 있다. - 탭이 별도로 들어갈 수 있다. | cs |
- Example_Tab 프로젝트 생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 1. 탭구성할때는 프래그먼트를 사용하는것이 대부분이다. 2. 처음 프로젝트 만들면 style.xml에 보면 탭이 기본적으로 들어가 있는거를 볼 수 있다. (이탭을 우리가 별도로 바꿀 수 있다.) -> 우리는 NoActionBar로 지정한뒤에 직접 탭을 만들어 볼 것이다. 3. 이제 레이아웃에서 액션바를 직접 만들어 보자.(추가) 4. 외부 라이브 러리를 사용해야한다 file-> project structure ( app 모듈-> dependencies -> +버튼 -> library dependencies-> com.android.support.design(com.android.support.design 26.0.0-alpha1) 추가 5. 그 정보가 build.gradle 파일에 들어가게 되는데, 버전이랑 맞춰줘야 한다. 6. 이제 상단에 액션바를 넣을 수 있음 7. 이제 실제로 XML 파일을 작성해보자 | cs |
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- CoordinatorLayout 겹쳐서 보이는것을 알아서 자리를 잡아 준다. 기본적으로 액션바를 여기다가 넣는다.-->
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.Actionbar">
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryDark"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:elevation="1dp"
android:id="@+id/toolbar">
</android.support.v7.widget.Toolbar>
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="1dp"
android:background="@android:color/background_light"
app:tabMode="fixed"
app:tabGravity="fill"
app:tabTextColor="@color/colorPrimary"
app:tabSelectedTextColor="@color/colorAccent">
<!-- 기본 레이아웃 넣는부분
layout_behavior을 꼭 넣어 준다. 이래야지 자리가 제대로 잡힌다.-->
</android.support.design.widget.TabLayout>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/container"></FrameLayout>
</android.support.design.widget.CoordinatorLayout>
</RelativeLayout>
8. 새로운 레이아웃을만들어보자. fragment1.xml 추가
버튼과, 텍스트뷰 추가 해보자, 그리고 배경 속성조정
9. 새로운 레이아웃을 만들어 보자 . fragment2.xml 추가
10. 새로운 레이아웃을 만들어 보자. fragment3.xml 추가
11. 이제 이 xml파일을 제어해줄 프래그먼트 java파일을 만들어 주자
Fragment1.java,Fragment2.java,Fragment3.java
generate->override method Add-> onCreteView() 메소드 추가 여기서 프래그먼트 인플레이션을 할 수 있도록 함.
12.이제 Main.java 로 가보자.
xml파일에 제어하는 방법 1
소스파일에서 제어 하는 방법 2
우리는 2번(소스파일에서 제어를 할 것이다.)
13. 동작 과정
xml 파일 -> 프래그먼트.java 등록 -> main 에서 프래그먼트 java의 객체를 가져와서 띄워준다.
소스 코드
<Fragment1.java>
package com.example.example_tab;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* Created by 김관현 on 2017-09-25.
*/
public class Fragment1 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ViewGroup rootview = (ViewGroup)inflater.inflate(R.layout.fragment1,container,false);
return rootview;
}
}
<Fragment2.java>
package com.example.example_tab;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* Created by 김관현 on 2017-09-25.
*/
public class Fragment2 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ViewGroup rootview = (ViewGroup)inflater.inflate(R.layout.fragment2,container,false);
return rootview;
}
}
<Fragment3.java>
package com.example.example_tab;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* Created by 김관현 on 2017-09-25.
*/
public class Fragment3 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
ViewGroup rootview = (ViewGroup)inflater.inflate(R.layout.fragment3,container,false);
return rootview;
}
}
<MainActivity.java>
package com.example.example_tab;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
public class MainActivity extends AppCompatActivity {
Fragment1 fragment1;
Fragment2 fragment2;
Fragment3 fragment3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar); // 액션바 안에 있으니까 뭐가 안맞는느낌이 있긴함
// 툴바 설정 완료
fragment1 = new Fragment1();
fragment2 = new Fragment2();
fragment3 = new Fragment3();
// add 나 replace 둘중 아무거나 해도 상관 없다.붙여주기
getSupportFragmentManager().beginTransaction().add(R.id.container,fragment1);
// 이제 탭을 완성해 볼것이다. 밑에 소스
TabLayout tabs = (TabLayout) findViewById(R.id.tabs);
tabs.addTab(tabs.newTab().setText("친구"));
tabs.addTab(tabs.newTab().setText("일대일 채팅"));
tabs.addTab(tabs.newTab().setText("기타"));
tabs.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
int position = tab.getPosition();
Fragment selected = null;
if(position == 0){
selected =fragment1;
}else if(position == 1){
selected = fragment2;
}else if(position == 2){
selected = fragment3;
}
// 바뀌게 해준다 replace () 기존에 있떤것 commit()을 이용해서 바꿔준다.
getSupportFragmentManager().beginTransaction().replace(R.id.container,selected).commit();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
}
<activity_main.xml>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- CoordinatorLayout 겹쳐서 보이는것을 알아서 자리를 잡아 준다. 기본적으로 액션바를 여기다가 넣는다.-->
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.Actionbar">
<android.support.design.widget.TabLayout
android:id = "@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="1dp"
android:background="@android:color/background_light"
app:tabMode="fixed"
app:tabGravity="fill"
app:tabTextColor="@color/colorPrimary"
app:tabSelectedTextColor="@color/colorAccent">
<!-- 기본 레이아웃 넣는부분
layout_behavior을 꼭 넣어 준다. 이래야지 자리가 제대로 잡힌다.-->
</android.support.design.widget.TabLayout>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryDark"
android:elevation="1dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark"></android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/container"></FrameLayout>
</android.support.design.widget.CoordinatorLayout>
</RelativeLayout>
<fragment1.xml>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_blue_bright">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="첫번째 화면"
android:TextSize="40dp"/>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="다음" />
</LinearLayout>
<fragment2.xml>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_orange_light">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="두번째 화면"
android:TextSize="40dp"/>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="다음" />
</LinearLayout>
<fragment3.xml>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_purple">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="세번째 화면"
android:TextSize="40dp"/>
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="다음" />
</LinearLayout>
<결과>
이상 액션바를 탭과함께 보여주기 예제를 마치겠습니다. 감자개발자였습니다. 감사합니다. : )
'Android' 카테고리의 다른 글
[안드로이드] AAR 라이브러리 파일 열기(내용확인하기) (0) | 2018.08.01 |
---|---|
[Android] SQLite 정의 및 회원가입 예제 (2) | 2017.11.15 |
[Android]액션바와 탭 사용하기 (0) | 2017.09.25 |
[Android] Viewer 만들기(뷰어만들기) (0) | 2017.09.24 |
[Android]프래그먼트 (Fragment) (4) | 2017.09.24 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- node.js
- node
- Spring
- TensorFlow
- programming
- 안드로이드
- 감자개발자
- 개발하는 관광이
- 감자코딩
- 초보자를 위한 C언어 300제
- 머신러닝
- Controller
- Android
- Algorigm
- 노드
- 학교
- C언어
- 리버싱
- 텐서플로우
- BFS
- 프로그래밍
- 알고리즘
- 스프링
- db
- 복습
- MVC
- 백준알고리즘
- 백준
- C langauge
- 코드엔진
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함