最近開發遇到的問題:
- popupWindow上有輸入框,我希望在軟件盤彈出的時候popupWindow可以上移,蒐集了很多資料,有的說通過屏幕的大小減去Activity顯示的大小,就是鍵盤的高度,然後動態設置popupWindow的大小,但是沒有實現.因爲popupWindow的大小就是屏幕的大小,所以此時Activity顯示的大小就是0.
/**
2. 獲取鍵盤的高度,設置scrollview的大小
*/
public void setScrollViewHight() {
ll_root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
/**
* the result is pixels
*/
@Override
public void onGlobalLayout() {
Rect r = new Rect();
//獲取可見高度
int visiableHeight = r.bottom - r.top;
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) myScrool.getLayoutParams();
//獲取當前控件的佈局對象
params.height = visiableHeight;//設置當前控件佈局的高度
myScrool.setLayoutParams(params);//將設置好的佈局參數應用到控件中
ll_root.getWindowVisibleDisplayFrame(r);
int screenHeight = ll_root.getRootView().getHeight();
int heightDifference = screenHeight - visiableHeight;
Log.e("可見高度是", visiableHeight + "");
Log.e("Keyboard Size", "Size:" + heightDifference);
//boolean visible = heightDiff > screenHeight / 3;
}
});
}
所以我使用了另一種方式,就是設置popupWindow的屬性,據說這兩個屬性的位置不可以變,我沒有測試,但是設置之後也沒其效果,之後我就通過問一些大神知道了popupWindow必須被scrollview包裹纔行,不然不可以彈出.
menuWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);
menuWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
也有說找到這個activity的配置文件設置這個屬性android:windowSoftInputMode = “stateVisible|adjustResize”但是我的也沒有效果,之後沒有測試,可能是我開始沒有用scrollview做頂級佈局吧.如果是”adjustPan|stateHidden”則鍵盤彈出佈局不會上移,還有其他的屬性,這裏就不一一例舉了.
- EditText不能輸入小數,只要把android:inputtype=”number”(整數),可以number改爲numberDecimal即可,還有其他的edittext的設置可以參照以下網址進行動態設置
2.EditText在使用的時候想它只獲取焦點,如果用戶不點擊就不彈出軟鍵盤,需要設置這個屬性就可以.參考設置EditText只獲取焦點,不彈出軟鍵盤
android:windowSoftInputMode=”stateHidden”
3. 設置Textview的字體顏色的幾種方式:
在類文件中動態設置
- textview.setTextColor(this.getResources().getColor(R.color.red));
- textview.setTextColor(Color.rgb(255,255, 255));
- textview.setTextColor(Color.parseColor("#FFFFFF"));
- textview.setTextColor(Color.parseColor("#FFFFFF"));
- tv.setTextColor(0xffff00ff);//0xffff00ff是int類型的數據,分組一下0x|ff|ff00ff,0x是代表顏色整數的標記,ff是表示透明度,ff00ff表示顏色,注意:這裏ffff00ff必須是8個的顏色表示,不接受ff00ff這種6個的顏色表示。
設置控制器,在drawable文件夾下創建對應的文件,設置其各種狀態下的顏色.
在佈局文件中設置,佈局文件的設置相對來說比較簡單,但屬於靜態設置.
- android:textColor="@color/red"
<color name="red">#FF0000</color>
- android:textColor="#ffffff"
- log打印過長顯示不出來,在獲取數據的時候經常會出現數據只打印一半這樣解析很費勁,後來看源碼瞭解到log打印有限制,最大是4k(就是字符串的長度),所以我們可以設置一下,防止超過最大長度我們可以設置一個小點的閾值,segmentSize = 3 * 1024,低於這個值就直接打印,,超過的就截成段來打印即可.
public class LogUtil {
/**
* 截斷輸出日誌
* @param msg
*/
public static void e(String tag, String msg) {
if (tag == null || tag.length() == 0
|| msg == null || msg.length() == 0)
return;
int segmentSize = 3 * 1024;
long length = msg.length();
if (length <= segmentSize ) {// 長度小於等於限制直接打印
Log.e(tag, msg);
}else {
while (msg.length() > segmentSize ) {// 循環分段打印日誌
String logContent = msg.substring(0, segmentSize );
msg = msg.replace(logContent, "");
Log.e(tag, logContent);
}
Log.e(tag, msg);// 打印剩餘日誌
}
}
}
這些都是平時用的挺多的,每次查每次忘,所以整理一下,方便以後使用.