Android 아래쪽 메뉴 표시 줄 에서 실 현 된 인 스 턴 스 코드
1.메 인 인터페이스 레이아웃 의 실현:
먼저 효과 도:
전체 화면 에 포 함 된 내용 을 소개 합 니 다.밑 에 다섯 개의 네 비게 이 션 버튼 이 있 고 메 인 화면 은 FrameLayout 를 포함 하여 다섯 개의 Fragment 를 넣 습 니 다.아래쪽 단 추 를 누 르 면 지정 한 인터페이스 로 이동 합 니 다.
레이아웃 구현:activitymain.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.garvey.activitys.MainActivity">
<FrameLayout
android:id="@+id/id_fragment_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/id_diverline"></FrameLayout>
<View
android:id="@+id/id_diverline"
android:layout_above="@+id/id_bottom_tags"
android:layout_width="match_parent"
android:layout_height="0.1dp"
android:background="#C2C5CE"/>
<LinearLayout
android:id="@+id/id_bottom_tags"
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_alignParentBottom="true"
android:background="@drawable/bt_tag_bg"
android:orientation="horizontal">
<RadioGroup
android:id="@+id/id_navcontent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@color/transparent"
android:gravity="center"
android:orientation="horizontal">
<RadioButton
android:id="@+id/id_nav_btshouye"
android:layout_width="0dp"
android:checked="true"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:background="@color/transparent"
android:button="@null"
android:clickable="true"
android:drawablePadding="2dp"
android:drawableTop="@drawable/x_nav_menu_sy"
android:gravity="center"
android:onClick="switchView"
android:text=" "
android:textColor="@drawable/x_nav_menu_color"
android:textSize="10sp" />
<RadioButton
android:id="@+id/id_nav_btgouwu"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:background="@color/transparent"
android:button="@null"
android:clickable="true"
android:drawablePadding="2dp"
android:drawableTop="@drawable/x_nav_menu_gw"
android:gravity="center"
android:onClick="switchView"
android:text=" "
android:textColor="@drawable/x_nav_menu_color"
android:textSize="10sp" />
<RadioButton
android:id="@+id/id_nav_btfengshang"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:background="@color/transparent"
android:button="@null"
android:clickable="true"
android:drawablePadding="2dp"
android:drawableTop="@drawable/x_nav_menu_fs"
android:gravity="center"
android:onClick="switchView"
android:text=" "
android:textColor="@drawable/x_nav_menu_color"
android:textSize="10sp" />
<RadioButton
android:id="@+id/id_nav_btshequ"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:background="@color/transparent"
android:button="@null"
android:clickable="true"
android:drawablePadding="2dp"
android:drawableTop="@drawable/x_nav_menu_sq"
android:gravity="center"
android:onClick="switchView"
android:text=" "
android:textColor="@drawable/x_nav_menu_color"
android:textSize="10sp" />
<RadioButton
android:id="@+id/id_nav_btwode"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:background="@color/transparent"
android:button="@null"
android:clickable="true"
android:drawablePadding="2dp"
android:drawableTop="@drawable/x_nav_menu_wd"
android:gravity="center"
android:onClick="switchView"
android:text=" "
android:textColor="@drawable/x_nav_menu_color"
android:textSize="10sp" />
</RadioGroup>
</LinearLayout>
</RelativeLayout>
클릭 한 배경 변 화 를 설정 하기 위해 selector 를 작성 합 니 다:x_nav_menu_fs.xml,x_nav_menu_gw.xml,x_nav_menu_sq.xml,x_nav_menu_sy.xml,x_nav_menu_wd.xml
예 를 들 어 xnav_menu_sy.xml 파일 의 쓰기:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/tabitem_0" android:state_checked="true"></item>
<item android:drawable="@mipmap/tabitem0"></item>
</selector>
텍스트 작성 클릭 후 색상 변화 drawable:xnav_menu_color.xml
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#CF75E9" android:state_checked="true"></item>
<item android:color="#989898"></item>
</selector>
아래쪽 메뉴 표시 줄 배경 을 작성 하 는 drawablebttag_bg.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF" />
</shape>
위 와 같은 방식 으로 밑 에 있 는 메뉴 표시 줄 의 레이아웃 방식 을 완 성 했 고 레이아웃 을 할 때 저 희 는 모든 RadioButton 에 감청 기 를 설 치 했 습 니 다.감청 방법 은:switchView(View view)입 니 다.2.레이아웃 의 코드 구현
다섯 개의 fragment 를 만 들 고 각 단추 에 대응 하 는 인터페이스 를 만 듭 니 다.Fragment 의 코드 는 매우 간단 합 니 다.예 를 들 어 다음 Fragment:
package com.garvey.modules;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.garvey.babyshop.R;
/**
* : Garvey on 2016/6/13.
* : [email protected]
*/
public class ShouYeFragment extends Fragment{
// Fragment view
private View rootView;
private static ShouYeFragment shouYeFragment;
public ShouYeFragment(){}
public static ShouYeFragment getNewInstance(){
if (shouYeFragment ==null){
shouYeFragment =new ShouYeFragment();
}
return shouYeFragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (rootView == null) {
rootView = inflater.inflate(R.layout.fragment_shouye, container, false);
}
// rootView parent,
// parent parent , rootview parent 。
ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null) {
parent.removeView(rootView);
}
return rootView;
}
@Override
public void onResume() {
super.onResume();
}
}
그 다음 에 MainActivity 코드 를 작성 하고 인터페이스 에 대응 하 는 색인 을 먼저 확립 합 니 다.
public static final int VIEW_SHOUYE_INDEX = 0;
public static final int VIEW_GOUWU_INDEX = 1;
public static final int VIEW_FENGSHANG_INDEX = 2;
public static final int VIEW_SHEQU_INDEX = 3;
public static final int VIEW_WODE_INDEX = 4;
private int temp_position_index = -1;
그 다음 에 해당 하 는 switchView(View view)방법 을 써 서 해당 하 는 인터페이스 전환 을 실현 합 니 다.
public void switchView(View view) {
switch (view.getId()) {
case R.id.id_nav_btshouye:
if (temp_position_index != VIEW_SHOUYE_INDEX) {
//
mTransaction = getSupportFragmentManager().beginTransaction();
mTransaction.replace(R.id.id_fragment_content, syFragemnt);
mTransaction.commit();
}
temp_position_index = VIEW_SHOUYE_INDEX;
break;
case R.id.id_nav_btgouwu:
if (temp_position_index != VIEW_GOUWU_INDEX) {
//
mTransaction = getSupportFragmentManager().beginTransaction();
mTransaction.replace(R.id.id_fragment_content, gwFragment);
mTransaction.commit();
}
temp_position_index = VIEW_GOUWU_INDEX;
break;
case R.id.id_nav_btfengshang:
if (temp_position_index != VIEW_FENGSHANG_INDEX) {
//
mTransaction = getSupportFragmentManager().beginTransaction();
mTransaction.replace(R.id.id_fragment_content, fsFragment);
mTransaction.commit();
}
temp_position_index = VIEW_FENGSHANG_INDEX;
break;
case R.id.id_nav_btshequ:
if (temp_position_index != VIEW_SHEQU_INDEX) {
//
mTransaction = getSupportFragmentManager().beginTransaction();
mTransaction.replace(R.id.id_fragment_content, sqFragment);
mTransaction.commit();
}
temp_position_index = VIEW_SHEQU_INDEX;
break;
case R.id.id_nav_btwode:
if (temp_position_index != VIEW_WODE_INDEX) {
//
mTransaction = getSupportFragmentManager().beginTransaction();
mTransaction.replace(R.id.id_fragment_content, wdFragment);
mTransaction.commit();
}
temp_position_index = VIEW_WODE_INDEX;
break;
}
}
MainActivity 의 총 코드 는 다음 과 같 습 니 다.
package com.garvey.activitys;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.RadioGroup;
import com.garvey.babyshop.R;
import com.garvey.modules.FengShangFragment;
import com.garvey.modules.GouWuFragment;
import com.garvey.modules.SheQuFragment;
import com.garvey.modules.ShouYeFragment;
import com.garvey.modules.WoDeFragment;
public class MainActivity extends AppCompatActivity {
/**
* widdget
*/
private RadioGroup mNavGroup;
private FragmentTransaction mTransaction;
/**
* Fragments
*/
Fragment syFragemnt, gwFragment, fsFragment, sqFragment, wdFragment;
public static final int VIEW_SHOUYE_INDEX = 0;
public static final int VIEW_GOUWU_INDEX = 1;
public static final int VIEW_FENGSHANG_INDEX = 2;
public static final int VIEW_SHEQU_INDEX = 3;
public static final int VIEW_WODE_INDEX = 4;
private int temp_position_index = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mNavGroup = (RadioGroup) findViewById(R.id.id_navcontent);
syFragemnt = ShouYeFragment.getNewInstance();
gwFragment = GouWuFragment.getNewInstance();
fsFragment = FengShangFragment.getNewInstance();
sqFragment = SheQuFragment.getNewInstance();
wdFragment = WoDeFragment.getNewInstance();
//
mTransaction = getSupportFragmentManager().beginTransaction();
mTransaction.replace(R.id.id_fragment_content, syFragemnt);
mTransaction.commit();
}
public void switchView(View view) {
switch (view.getId()) {
case R.id.id_nav_btshouye:
if (temp_position_index != VIEW_SHOUYE_INDEX) {
//
mTransaction = getSupportFragmentManager().beginTransaction();
mTransaction.replace(R.id.id_fragment_content, syFragemnt);
mTransaction.commit();
}
temp_position_index = VIEW_SHOUYE_INDEX;
break;
case R.id.id_nav_btgouwu:
if (temp_position_index != VIEW_GOUWU_INDEX) {
//
mTransaction = getSupportFragmentManager().beginTransaction();
mTransaction.replace(R.id.id_fragment_content, gwFragment);
mTransaction.commit();
}
temp_position_index = VIEW_GOUWU_INDEX;
break;
case R.id.id_nav_btfengshang:
if (temp_position_index != VIEW_FENGSHANG_INDEX) {
//
mTransaction = getSupportFragmentManager().beginTransaction();
mTransaction.replace(R.id.id_fragment_content, fsFragment);
mTransaction.commit();
}
temp_position_index = VIEW_FENGSHANG_INDEX;
break;
case R.id.id_nav_btshequ:
if (temp_position_index != VIEW_SHEQU_INDEX) {
//
mTransaction = getSupportFragmentManager().beginTransaction();
mTransaction.replace(R.id.id_fragment_content, sqFragment);
mTransaction.commit();
}
temp_position_index = VIEW_SHEQU_INDEX;
break;
case R.id.id_nav_btwode:
if (temp_position_index != VIEW_WODE_INDEX) {
//
mTransaction = getSupportFragmentManager().beginTransaction();
mTransaction.replace(R.id.id_fragment_content, wdFragment);
mTransaction.commit();
}
temp_position_index = VIEW_WODE_INDEX;
break;
}
}
}
원본 코드 다운로드 이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.