我們經(jīng)常玩QQ、微信,大家是否認(rèn)真看過它們的聊天界面,它們的輸入框既可以隨軟鍵盤高度變化屹蚊,又可以隨底部控件的高度變化,而且底部控件還可以隨軟鍵盤高度的調(diào)整而自動調(diào)整(只不過設(shè)置了最小捆交、最大值)淑翼,看上去是不是覺得很酷呢?今天品追,我就在這介紹一個比它還好用的控件--SoftLinearLayout玄括。
首先,我們來看一下效果演示圖:
接下來肉瓦,我們講解一下控件功能及其使用:
1.功能
底部控件隨輸入法高度變化而變化遭京,比QQ聊天界面更完美。
2.Android Studio使用方法
dependencies{
compile 'com.wkp:SoftLinearLayout:1.0.1'
//Android Studio3.0+可用以下方式
//implementation 'com.wkp:SoftLinearLayout:1.0.1'
}
注意:以Github地址為準(zhǔn)泞莉。
3.使用詳解
- 屬性講解
<!--可變高度的極限小高度-->
<attr name="wkp_minHeight" format="integer"/>
<!--可變高度的極限大高度-->
<attr name="wkp_maxHeight" format="integer"/>
<!--顯示軟鍵盤時的動畫時長-->
<attr name="wkp_showSoftDuration" format="integer"/>
<!--開關(guān)底部布局時的動畫時長-->
<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);
//設(shè)置開關(guān)改變監(jiān)聽
mSll.setOnToggleChangedListener(new SoftLinearLayout.OnToggleChangedListener() {
@Override
public void onToggleChanged(boolean isToggle) {
Log.d("MainActivity", "isToggle:" + isToggle);
}
});
}
//點擊開/關(guān)
public void sure(View view) {
mSll.toggle();
}
}
結(jié)語
控件支持直接代碼創(chuàng)建哪雕,還有更多API請觀看SoftLinearLayout.java內(nèi)的注釋說明。
歡迎大家使用Github地址鲫趁,感覺好用請給個Star鼓勵一下斯嚎,謝謝!
大家如果有更好的意見或建議以及好的靈感挨厚,請郵箱作者堡僻,謝謝!
QQ郵箱:
1535514884@qq.com
163郵箱:
15889686524@163.com
Gmail郵箱:
wkp15889686524@gmail.com