package cn.sinata.xldutils.activitys;
|
|
import android.annotation.SuppressLint;
|
import android.content.Context;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.view.inputmethod.InputMethodManager;
|
import android.widget.EditText;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
|
import androidx.annotation.LayoutRes;
|
|
import cn.sinata.xldutils.R;
|
import cn.sinata.xldutils.view.TitleBar;
|
|
/**
|
* 带标题的基础页面
|
*/
|
public abstract class TitleActivity extends BaseActivity {
|
|
private LinearLayout root_layout;
|
protected TitleBar titleBar;
|
|
@SuppressLint("ResourceType")
|
@Override
|
public void setContentView(@LayoutRes int layoutResID) {
|
super.setContentView(R.layout.activity_base_title);
|
init();
|
if (layoutResID > 0) {
|
LayoutInflater.from(this).inflate(layoutResID,root_layout,true);
|
}
|
}
|
|
@Override
|
public void setContentView(View view) {
|
super.setContentView(view);
|
init();
|
if (view != null) {
|
root_layout.addView(view);
|
}
|
}
|
|
@Override
|
public void setContentView(View view, ViewGroup.LayoutParams params) {
|
super.setContentView(view, params);
|
init();
|
if (view != null) {
|
root_layout.addView(view,params);
|
}
|
}
|
//初始化部分视图,以及默认设置
|
private void init() {
|
root_layout = (LinearLayout) findViewById(R.id.root_layout);
|
titleBar = (TitleBar) findViewById(R.id.titleBar);
|
titleBar.showLeft(showLeftButton());
|
//如果默认显示左边按钮,默认点击事件为关闭页面
|
if (showLeftButton()){
|
titleBar.setLeftButton(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
onBackPressed();
|
}
|
});
|
}
|
//设置根试图点击事件来实现点击输入框以外关闭键盘,缺点是如果子view设置了点击事件,将会无效。
|
//暂时方式如此。
|
if (shouldCloseSoftWindowWhenTouchOut()){
|
root_layout.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
hideSoftWindow(v);
|
}
|
});
|
|
}
|
}
|
|
protected void addView(int position,View view){
|
root_layout.addView(view,position);
|
}
|
|
/**
|
* 控制显示标题栏左边按钮
|
* @return 默认显示
|
*/
|
protected boolean showLeftButton(){
|
return true;
|
}
|
|
/**
|
* 设置左按钮文字
|
* @param text 文字
|
*/
|
protected void setLeftButtonText(String text){
|
titleBar.setLeftButton(text);
|
}
|
|
/**
|
* 设置左按钮点击事件
|
* @param onClickListener 点击事件
|
*/
|
public void setLeftButtonOnClick(View.OnClickListener onClickListener){
|
titleBar.setLeftButton(onClickListener);
|
}
|
|
/**
|
* 设置左按钮文字
|
* @param text 文字
|
* @param left 右边图片
|
* @param onClickListener 单击事件
|
*/
|
public void setLeftButtonTextLeft(String text, int left, View.OnClickListener onClickListener){
|
titleBar.setLeftButton(text,left,0,onClickListener);
|
}
|
|
/**
|
* 设置左按钮文字
|
* @param text 文字
|
* @param right 左边图片
|
* @param onClickListener 单击事件
|
*/
|
public void setLeftButtonTextRight(String text, int right, View.OnClickListener onClickListener){
|
titleBar.setLeftButton(text,0,right,onClickListener);
|
}
|
|
/**
|
* 设置标题
|
* @param title 标题
|
*/
|
public void setTitle(String title){
|
titleBar.setTitle(title);
|
}
|
|
public void setTitleColor(int color){
|
titleBar.setTitleColor(color);
|
}
|
|
public EditText getTitleView(){
|
return titleBar.getTitleView();
|
}
|
|
/**
|
* 设置右边按钮,
|
* @param position 按钮位置
|
* @param text 按钮文字
|
*/
|
protected void setRightButtonText(int position,String text){
|
titleBar.setRightButtonText(position,text);
|
}
|
|
protected TextView getRightButton(int position){
|
return titleBar.getRightButton(position);
|
}
|
|
/**
|
* 设置标题是否为可输入状态
|
* @param canEditable 是否可输入
|
*/
|
public void setCanEditable(boolean canEditable){
|
titleBar.setCanEditable(canEditable);
|
}
|
|
public void setRightButton(int position,String text,int resId){
|
titleBar.setRightButton(position,text,resId);
|
}
|
|
protected void addRightButton(String title,View.OnClickListener onClickListener){
|
addRightButton(title,0,onClickListener);
|
}
|
public void addRightButton(int drawableId,View.OnClickListener onClickListener){
|
addRightButton(null,drawableId,onClickListener);
|
}
|
public void addRightButton(String title,int right,View.OnClickListener onClickListener){
|
titleBar.addRightButton(title,right,onClickListener);
|
}
|
|
public void hideRightButton(int position,boolean hide){
|
titleBar.hideRightButton(position,hide);
|
}
|
|
public void hideLeftButton(boolean hide){
|
titleBar.showLeft(!hide);
|
}
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
}
|
|
protected boolean shouldCloseSoftWindowWhenTouchOut(){
|
return false;
|
}
|
/**
|
* 关闭键盘
|
* @param v
|
*/
|
private void hideSoftWindow(View v){
|
InputMethodManager imm = (InputMethodManager)
|
getSystemService(Context.INPUT_METHOD_SERVICE);
|
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
|
}
|
}
|