底部隨輸入法高度變化而變化的控件SoftLinearLayout
阿新 • • 發佈:2018-02-07
void nor studio 詳解 con integer tco 鍵盤 utf-8 我們經常玩QQ、微信,大家是否認真看過它們的聊天界面,它們的輸入框既可以隨軟鍵盤高度變化,又可以隨底部控件的高度變化,而且底部控件還可以隨軟鍵盤高度的調整而自動調整(只不過設置了最小、最大值),看上去是不是覺得很酷呢?今天,我就在這介紹一個比它還好用的控件--SoftLinearLayout。
???首先,我們來看一下效果演示圖:
??接下來,我們講解一下控件功能及其使用:
1.功能
底部控件隨輸入法高度變化而變化,比QQ聊天界面更完美。
2.Android Studio使用方法
dependencies{ compile ‘com.wkp:SoftLinearLayout:1.0.1‘ //Android Studio3.0+可用以下方式 //implementation ‘com.wkp:SoftLinearLayout:1.0.1‘ }
Note:使用版本以Github地址為準。
3.使用詳解
- 屬性講解
<!--可變高度的極限小高度--> <attr name="wkp_minHeight" format="integer"/> <!--可變高度的極限大高度--> <attr name="wkp_maxHeight" format="integer"/> <!--顯示軟鍵盤時的動畫時長--> <attr name="wkp_showSoftDuration" format="integer"/> <!--開關底部布局時的動畫時長--> <attr name="wkp_toggleDuration" format="integer"/>
- 布局示例
<?xml version="1.0" encoding="utf-8"?> <com.wkp.softlinearlayout.view.SoftLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/sll" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/ll_top" android:orientation="vertical" android:background="@android:color/holo_blue_bright" android:focusable="true" android:focusableInTouchMode="true" android:layout_width="match_parent" android:layout_height="wrap_content"> <RelativeLayout android:layout_weight="1" android:layout_width="match_parent" android:layout_height="0dp"> <ListView android:id="@+id/lv" android:stackFromBottom="true" android:transcriptMode="normal" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView> </RelativeLayout> <EditText android:hint="你好" android:id="@+id/et" android:layout_width="match_parent" android:layout_height="wrap_content"/> <Button android:text="確定" android:onClick="sure" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout android:id="@+id/ll_bottom" android:orientation="vertical" android:gravity="center" android:background="@android:color/holo_green_dark" android:layout_width="match_parent" android:layout_height="100dp"> <TextView android:gravity="center" android:text="底部" android:textColor="@android:color/white" android:textSize="16sp" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> </com.wkp.softlinearlayout.view.SoftLinearLayout>
-
代碼示例
@RequiresApi(api = Build.VERSION_CODES.KITKAT) public class MainActivity extends AppCompatActivity { private SoftLinearLayout mSll; private String[] mStrings = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("\\B"); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView lv = findViewById(R.id.lv); lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,mStrings)); mSll = findViewById(R.id.sll); //設置開關改變監聽 mSll.setOnToggleChangedListener(new SoftLinearLayout.OnToggleChangedListener() { @Override public void onToggleChanged(boolean isToggle) { Log.d("MainActivity", "isToggle:" + isToggle); } }); } //點擊開/關 public void sure(View view) { mSll.toggle(); } }
結語
控件支持直接代碼創建,還有更多API請觀看SoftLinearLayout.java內的註釋說明。
歡迎大家使用Github地址,感覺好用請給個Star鼓勵一下,謝謝!
大家如果有更好的意見或建議以及好的靈感,請郵箱作者,謝謝!
QQ郵箱:
[email protected]
163郵箱:
[email protected]
Gmail郵箱:
[email protected]
底部隨輸入法高度變化而變化的控件SoftLinearLayout