lmw
2023-04-03 16ea883d3c03fd8b910f9282aa1bc08378d40d54
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
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);
    }
}