728x90
반응형
xml
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".wMy_View.Dir_TabLayout.View_Tab_MainActivity">
<!-- 탭레이아웃 -->
<!-- 그레이들에서 메터리얼 디자인 추가 필요 -->
<!-- 레이아웃의 높이가 수정이 안된다
해결방법 :
1) 직접 소스로 수정해줘버리기
tab_layout.getLayoutParams().height
= (int) getResources().getDimension(R.dimen.tablayout_view_h);
-->
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
style="@style/AppTheme.TabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorHeight="5dp"
app:tabTextAppearance="@style/tab_text"
>
</com.google.android.material.tabs.TabLayout>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
</layout>
main
package com.appgrider.test_android.wMy_View.Dir_TabLayout;
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager2.widget.ViewPager2;
import com.appgrider.test_android.R;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import static androidx.viewpager2.widget.ViewPager2.SCROLL_STATE_DRAGGING;
public class View_Tab_MainActivity extends AppCompatActivity {
ViewPager2 view_pager;
TabLayout tab_layout;
Adapter_Pager adapter_pager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view__frag__main);
// 뷰페이저 연결
view_pager = findViewById(R.id.view_pager);
view_pager.setOffscreenPageLimit(3); // 페이지 유지 갯수
// 페이지 스크롤 막기
view_pager.setUserInputEnabled(false);
/* view_pager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
if (state == SCROLL_STATE_DRAGGING && view_pager.getCurrentItem() == 0) {
view_pager.setUserInputEnabled(false);
} else {
view_pager.setUserInputEnabled(true);
}
}
});*/
// 뷰페이저 어댑터 연결
adapter_pager = new Adapter_Pager(this);
view_pager.setAdapter(adapter_pager);
// tabLayout에 뷰페이저 연결
tab_layout = findViewById(R.id.tab_layout);
// tabLayout 높이 조정
tab_layout.getLayoutParams().height = (int) getResources().getDimension(R.dimen.tablayout_view_h);
boolean auto_refresh = true;
// TabConfigurationStrategy
TabLayoutMediator tabLayoutMediator = new TabLayoutMediator(tab_layout, view_pager, auto_refresh,(tab, position) -> {
switch (position){
case 0 : {
// tab.setText("탭1");
// tab.setIcon(getResources().getDrawable(R.drawable.ico_1, null));
tab.setCustomView(R.layout.item_tab);
break;
}
case 1 : {
tab.setText("탭2");
tab.setIcon(getResources().getDrawable(R.drawable.ico_2, null));
break;
}
case 2 : {
tab.setText("탭3");
tab.setIcon(getResources().getDrawable(R.drawable.ico_3, null));
break;
}
}
});
tabLayoutMediator.attach();
}
public void main_fun(){
Toast.makeText(this,"메인함수 호출",Toast.LENGTH_SHORT).show();
}
}
* 기본 텍스트 , 배경 수정
<style name="AppTheme.TabLayout" parent="Widget.MaterialComponents.TabLayout">
<item name="android:background">#000</item>
<item name="tabIndicatorColor">#f00</item>
</style>
728x90
반응형