打算寫(xiě)篇文章記錄之前遇到的一個(gè)需求供炼,如題一屋。還特意寫(xiě)個(gè)demo運(yùn)行一下,尷尬的是:只是在布局設(shè)置了android:gravity="center_vertical|end"袋哼,就達(dá)到之前的需求冀墨,難道是我之前寫(xiě)錯(cuò)了?先嬉?
經(jīng)過(guò)測(cè)試:android 7.0 及以后轧苫,無(wú)需進(jìn)行額外的設(shè)置,即可達(dá)到正常效果,7.0 以下需要代碼動(dòng)態(tài)設(shè)置一下含懊。
否則將是如下效果:
7.0 以下默認(rèn)效果
我們來(lái)看一下如何在Activity中的代碼:
public class MainActivity extends AppCompatActivity {
private EditText mEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditText = findViewById(R.id.et);
// 如下是內(nèi)容為空的配置身冬,需要兩個(gè)屬性結(jié)合使用;如果有默認(rèn)值岔乔,進(jìn)行相反的配置
// 設(shè)置文字的對(duì)齊方式
mEditText.setGravity(Gravity.START | Gravity.CENTER_VERTICAL);
// 設(shè)置文本的顯示方向
mEditText.setTextDirection(View.TEXT_DIRECTION_RTL);
mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if (TextUtils.isEmpty(editable.toString())) {
mEditText.setGravity(Gravity.START | Gravity.CENTER_VERTICAL);
mEditText.setTextDirection(View.TEXT_DIRECTION_RTL);
} else {
mEditText.setGravity(Gravity.END | Gravity.CENTER_VERTICAL);
mEditText.setTextDirection(View.TEXT_DIRECTION_LTR);
}
}
});
}
}
這樣應(yīng)該就解決了兼容性的問(wèn)題了酥筝,效果如下:
最終效果