感謝開發(fā)者 有的當(dāng)時保存的時候沒有保存連接如果侵權(quán)聯(lián)系刪除
留給后來者,只設(shè)置底部邊框的方法,在drawable里新建xml艘蹋,選擇 layer-list 领虹,代碼如下靡砌,稍作修改后的代碼:
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 連框顏色值 -->
<item>
<shape>
<solid android:color="#000000" />
</shape>
</item>
<!-- 主體背景顏色值 -->
<item android:bottom="1dp"> <!--設(shè)置只有底部有邊框-->
<shape>
<solid android:color="#ffffff" />
</shape>
</item>
</layer-list>
viewpager 包裹內(nèi)容
http://stackoverflow.com/questions/8394681/android-i-am-unable-to-have-viewpager-wrap-content
監(jiān)聽軟鍵盤彈起
**背景:**
在很多App開發(fā)過程中需要在Activity中監(jiān)聽[Android](http://lib.csdn.net/base/android)設(shè)備的軟鍵盤彈起與關(guān)閉,但是Android似乎沒有提供相關(guān)的的監(jiān)聽API給我們來調(diào)用锋边,本文提供了一個可行的辦法來監(jiān)聽軟鍵盤的彈起與關(guān)閉用押。
**預(yù)備知識:**
在manifest文件中可以設(shè)置Activity的android:windowSoftInputMode屬性疯坤,這個屬性值常見的設(shè)置如下:
android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
那么這里值的含義列表如下:
【A】stateUnspecified:軟鍵盤的狀態(tài)并沒有指定报慕,系統(tǒng)將選擇一個合適的狀態(tài)或依賴于主題的設(shè)置
【B】stateUnchanged:當(dāng)這個activity出現(xiàn)時,軟鍵盤將一直保持在上一個activity里的狀態(tài)压怠,無論是隱藏還是顯示
【C】stateHidden:用戶選擇activity時眠冈,軟鍵盤總是被隱藏
【D】stateAlwaysHidden:當(dāng)該Activity主窗口獲取焦點時,軟鍵盤也總是被隱藏的
【E】stateVisible:軟鍵盤通常是可見的
【F】stateAlwaysVisible:用戶選擇activity時菌瘫,軟鍵盤總是顯示的狀態(tài)
【G】adjustUnspecified:默認(rèn)設(shè)置蜗顽,通常由系統(tǒng)自行決定是隱藏還是顯示
【H】adjustResize:該Activity總是調(diào)整屏幕的大小以便留出軟鍵盤的空間
【I】adjustPan:當(dāng)前窗口的內(nèi)容將自動移動以便當(dāng)前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內(nèi)容的部分
**示例:**
(1)首先我們需要將監(jiān)聽所在的Activity在Manifest文件中的設(shè)置為如下形式:
**[html]** [view plain](http://blog.csdn.net/bear_huangzhen/article/details/45896333#) [copy](http://blog.csdn.net/bear_huangzhen/article/details/45896333#)
<activity
android:name="com.bear.softkeyboardlistener.MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
這樣設(shè)置之后,當(dāng)有軟鍵盤彈起來的時候突梦,Activity的布局大小會被壓縮上去,但是你仍然可以通過滑動瀏覽所有羽利。
(2)我們要為Activity的最外面的Layout設(shè)置一個OnLayoutChangeListener監(jiān)聽器:
**[java]** [view plain](http://blog.csdn.net/bear_huangzhen/article/details/45896333#) [copy](http://blog.csdn.net/bear_huangzhen/article/details/45896333#)
[![在CODE上查看代碼片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/672332)[![派生到我的代碼片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/672332/fork)
import com.bear.bearbroadcastreceiver.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnLayoutChangeListener;
import android.widget.Toast;
public class MainActivity extends Activity implements OnLayoutChangeListener{
//Activity最外層的Layout視圖
private View activityRootView;
//屏幕高度
private int screenHeight = 0;
//軟件盤彈起后所占高度閥值
private int keyHeight = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
activityRootView = findViewById(R.id.root_layout);
//獲取屏幕高度
screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();
//閥值設(shè)置為屏幕高度的1/3
keyHeight = screenHeight/3;
}
@Override
protected void onResume() {
super.onResume();
//添加layout大小發(fā)生改變監(jiān)聽器
activityRootView.addOnLayoutChangeListener(this);
}
@Override
public void onLayoutChange(View v, int left, int top, int right,
int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
//old是改變前的左上右下坐標(biāo)點值宫患,沒有old的是改變后的左上右下坐標(biāo)點值
// System.out.println(oldLeft + " " + oldTop +" " + oldRight + " " + oldBottom);
// System.out.println(left + " " + top +" " + right + " " + bottom);
//現(xiàn)在認(rèn)為只要控件將Activity向上推的高度超過了1/3屏幕高,就認(rèn)為軟鍵盤彈起
if(oldBottom != 0 && bottom != 0 &&(oldBottom - bottom > keyHeight)){
Toast.makeText(MainActivity.this, "監(jiān)聽到軟鍵盤彈起...", Toast.LENGTH_SHORT).show();
}else if(oldBottom != 0 && bottom != 0 &&(bottom - oldBottom > keyHeight)){
Toast.makeText(MainActivity.this, "監(jiān)聽到軟件盤關(guān)閉...", Toast.LENGTH_SHORT).show();
}
}
EditText屬性的設(shè)置
在開發(fā)的過程中这弧,通常會用到EditText娃闲,如何讓虛擬鍵盤來適應(yīng)輸入框中內(nèi)容的類型,通常我們都會在xml文件中加入android:inputType=""匾浪。
android:inputType="none"android:inputType="text"android:inputType="textCapCharacters"http://前3個輸入普通字符android:inputType="textCapWords"http://單詞首字母大小
android:inputType="textCapSentences"http://僅第一個字母大小
android:inputType="textAutoCorrect"android:inputType="textAutoComplete"http://前兩個自動完成
android:inputType="textMultiLine"http://多行輸入
android:inputType="textImeMultiLine"http://輸入法多行(不一定支持)
android:inputType="textNoSuggestions"http://不提示
android:inputType="textUri"http://URI格式
android:inputType="textEmailAddress"http://電子郵件地址格式
android:inputType="textEmailSubject"http://郵件主題格式
android:inputType="textShortMessage"http://短消息格式
android:inputType="textLongMessage"android:inputType="textPersonName"http://人名格式
android:inputType="textPostalAddress"http://郵政格式
android:inputType="textPassword"http://密碼格式
android:inputType="textVisiblePassword"http://密碼可見格式
android:inputType="textWebEditText"http://作為網(wǎng)頁表單的文本格式
android:inputType="textFilter"http://文本篩選格式
android:inputType="textPhonetic"http://拼音輸入格式
android:inputType="number"http://數(shù)字格式
android:inputType="numberSigned"http://有符號數(shù)字格式
android:inputType="numberDecimal"http://可以帶小數(shù)點的浮點格式
android:inputType="phone"http://撥號鍵盤
android:inputType="datetime"android:inputType="date"http://日期鍵盤
android:inputType="time"http://時間鍵盤
這個幫助很大
http://blog.csdn.net/jeff169/article/details/70195498?utm_source=itdadao&utm_medium=referral
Edittext默認(rèn)不獲取焦點
剛進(jìn)來的時候皇帮,不彈出鍵盤,EditText 有個光標(biāo)上面閃蛋辈,證明是可編輯的属拾,這個還是符合用戶習(xí)慣的,從用戶體驗的角度上講冷溶,還保留光標(biāo)的閃動是好的渐白。
解決方法1:(已經(jīng)試過,證明可以)
在activity屬性中設(shè)置[Android](http://lib.csdn.net/base/android):windowSoftInputMode="stateHidden"
解決方法2:
InputMethodManager inputMethodManager = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);inputMethodManager.hideSoftInputFromWindow(et.getWindowToken(), 0);
解決方法3:
系統(tǒng)默認(rèn)第一個EditText是獲得焦點的逞频,解決辦法纯衍,增加一個不顯示的view強制獲得焦點,比如<View android:layout_width="0dip"android:layout_height="0dip"android:focusableInTouchMode="true" />