【Android】一個簡單又實用的toolbar
阿新 • • 發佈:2019-02-12
在很多軟體中都可以看到風格統一的標題欄,上面包括返回鍵,當前頁的名稱等,下面詳細分析
這裡我們在佈局檔案中引用了一個toolbar,下面是toolbar的佈局檔案:
然後新建一個class,名字叫做BaseActivity讓它繼承Activity或者AppCompatActivity都可以,然後在coding你的BaseActivity<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:local="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="48dp" android:background="@color/colorToolBar" local:popupTheme="@style/ThemeOverlay.AppCompat.Light" local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <ImageView android:id="@+id/toolbar_left_im" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_centerVertical="true" android:background="@drawable/selector_back_press" android:gravity="center" android:padding="8dp" android:visibility="gone" /> <TextView android:id="@+id/toolbar_left_tv" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_centerVertical="true" android:background="@drawable/selector_back_press" android:drawableLeft="@mipmap/navi_back" android:drawablePadding="4dp" android:gravity="center" android:padding="8dp" android:textColor="@android:color/white" android:textSize="18dp" android:visibility="gone" /> <TextView android:id="@+id/toolbar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_gravity="center" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:singleLine="true" android:textColor="@android:color/white" android:textSize="20dp" /> <TextView android:id="@+id/toolbar_right_tv" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:background="@drawable/selector_back_press" android:gravity="center" android:padding="8dp" android:textColor="@android:color/white" android:textSize="18dp" android:visibility="gone" /> <ImageView android:id="@+id/toolbar_right_im" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:background="@drawable/selector_back_press" android:gravity="center" android:padding="8dp" android:visibility="gone" /> </RelativeLayout>
import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.ifreshwing.speedshooting.common.NoDoubleClickListener; public class BaseActivity extends AppCompatActivity { private TextView toolbar_string, toolbar_left_tv, toolbar_right_tv; private ImageView toolbar_left_im, toolbar_right_im; private RelativeLayout toolbar; public TextView getToolbar_string() { return toolbar_string; } public int getToolbarHeight() { toolbar = (RelativeLayout) findViewById(R.id.toolbar); return toolbar.getHeight(); } public void setToolbar_string(String str) { toolbar_string = (TextView) findViewById(R.id.toolbar_title); toolbar_string.setText(str); } public TextView getToolbar_left_tv() { return toolbar_left_tv; } public void setToolbar_left_tv(String str) { toolbar_left_tv = (TextView) findViewById(R.id.toolbar_left_tv); if (!str.equals("")) { toolbar_left_tv.setText(str); } toolbar_left_tv.setVisibility(View.VISIBLE); toolbar_left_tv.setOnClickListener(new NoDoubleClickListener() { @Override public void onNoDoubleClick(View v) { finish(); } }); } public TextView getToolbar_right_tv() { return toolbar_right_tv; } public void setToolbar_right_tv(String str) { toolbar_right_tv = (TextView) findViewById(R.id.toolbar_right_tv); toolbar_right_tv.setText(str); toolbar_right_tv.setVisibility(View.VISIBLE); } public ImageView getToolbar_left_im() { return toolbar_left_im; } public void setToolbar_left_im(int id) { toolbar_left_im = (ImageView) findViewById(R.id.toolbar_left_im); toolbar_left_im.setImageResource(id); toolbar_left_im.setVisibility(View.VISIBLE); toolbar_left_im.setOnClickListener(new NoDoubleClickListener() { @Override public void onNoDoubleClick(View v) { finish(); } }); } public ImageView getToolbar_right_im() { return toolbar_right_im; } public void setToolbar_right_im(int id) { toolbar_right_im = (ImageView) findViewById(R.id.toolbar_right_im); toolbar_right_im.setImageResource(id); toolbar_right_im.setVisibility(View.VISIBLE); } public void hindAll() { if (toolbar_left_im != null) { toolbar_left_im.setVisibility(View.GONE); } if (toolbar_left_tv != null) { toolbar_left_tv.setVisibility(View.GONE); } if (toolbar_right_im != null) { toolbar_right_im.setVisibility(View.GONE); } if (toolbar_right_im != null) { toolbar_right_im.setVisibility(View.GONE); } } }
然後在需要的Activity的佈局檔案加入
<include android:id="@+id/toolbar" layout="@layout/toolbar" />
在Activity的onCreate()方法寫這兩行程式碼就可以了
setToolbar_string("設定"); setToolbar_left_tv("返回");
這樣我們app風格不僅統一了,而且返回都可以不用點返回鍵了,是不是很簡單呢?