我有一个edittext,需要在键入时扩展到应用程序的整个宽度,在外部或其他任何地方点击它会恢复到常规大小。 我已经找到了一段代码,它可以满足我的需求,但它不会保留,例如一旦代码结束运行就会反转过程。我正在寻找解决这个问题的方法。另一种方法是这样做,类似的例子是在移动设备上使用网络浏览器时,在输入网址或搜索字词时,网址栏会扩展到全宽。
家庭活动
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
import android.widget.EditText;
public class Home extends AppCompatActivity {
public EditText search_bar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
search_bar = (EditText) findViewById(R.id.search_bar);
}
public void edit_clicked(View view){
Animation scaleAnimation = new ScaleAnimation(0, 2, 1, 2);
scaleAnimation.setDuration(750);
search_bar.startAnimation(scaleAnimation);
}
}
答案 0 :(得分:2)
这样做的动态方式:
ScaleAnimation animate = new ScaleAnimation(1, 2, 1, 1, Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0);
animate.setDuration(700);
animate.setFillAfter(true);
target.startAnimation(animate);
使用XML的方式
scale.xml(将其放在res / anim文件夹中)
<scale
android:duration="400"
android:fillAfter="true"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="0%"
android:pivotY="0%"
android:toXScale="2.0"
android:toYScale="1.0" >
</scale>
</set>
Java代码
Animation anim = AnimationUtils.loadAnimation(Anims.this, R.anim.scale);
mEdittext.startAnimation(anim);
(或)
简单试试这个
Animation scaleAnimation = new ScaleAnimation(0, -500, 1, 1);
scaleAnimation.setDuration(750);
scaleAnimation.setFillAfter(true);
editText.startAnimation(scaleAnimation);