打算写篇文章记录之前遇到的一个需求,如题。还特意写个demo运行一下,尴尬的是:只是在布局设置了android:gravity="center_vertical|end",就达到之前的需求,难道是我之前写错了??
经过测试:android 7.0 及以后,无需进行额外的设置,即可达到正常效果,7.0 以下需要代码动态设置一下。
否则将是如下效果:
我们来看一下如何在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);
// 如下是内容为空的配置,需要两个属性结合使用;如果有默认值,进行相反的配置
// 设置文字的对齐方式
mEditText.setGravity(Gravity.START | Gravity.CENTER_VERTICAL);
// 设置文本的显示方向
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);
}
}
});
}
}
这样应该就解决了兼容性的问题了,效果如下: