我正在尝试在右侧的EditText视图中添加一个动画微调器 。并以编程方式显示/隐藏它。
我通过引入线性插值旋转创建了动画微调器:
RES /动画/ rotate_forever.xml
<?xml version="1.0" encoding="UTF-8"?>
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:interpolator="@anim/linear_interpolator"
android:duration="1200" />
RES /布局/ main.xml中
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingRight="6dip"
android:paddingLeft="6dip"
android:orientation="horizontal"
android:background="@drawable/header_gradient" >
<EditText android:id="@+id/search_text"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_weight="1"
android:singleLine="true"
android:focusable="true" />
<ImageView android:id="@+id/search_spinner"
android:gravity="center_vertical|right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/spinner_black"/>
</LinearLayout>
我触发动画的方式是以编程方式工作,我看到左侧的EditView和右侧的ImageView旋转(因为我不知道其他)
ImageView searchSpinner = (ImageView) findViewById(R.id.search_spinner);
Animation spinnerAnimation = AnimationUtils.loadAnimation(this, R.anim.rotate_forever);
searchSpinner.startAnimation(spinnerAnimation);
我的问题是:
searchSpinner.setVisibility(View.INVISIBLE);
但那没用。谢谢,如果你有更好的想法如何处理这个问题,我正在倾听:)
答案 0 :(得分:3)
我可能会使用FrameLayout并执行以下操作:
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Some text..."
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:src="@drawable/...."
/>
</FrameLayout>
注意ImageView上的“layout_gravity”......
答案 1 :(得分:2)
通过您已经完成的工作,我认为最简单的答案是将LinearLayout更改为RelativeLayout,以便您可以在ImageView上设置alignParentRight并根据需要添加paddingRight。
另一个选择是创建自定义视图组件:http://developer.android.com/guide/topics/ui/custom-components.html
答案 2 :(得分:0)
这也有效
<EditText
...
android:drawableLeft="@drawable/my_icon" />
答案 3 :(得分:0)
如果您正在使用TextInputLayout并希望将可绘制外观设置为this
首先在res / anim /
中定义这样的动画集<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:duration="200"
android:interpolator="@android:interpolator/linear"
>
<scale
android:fromXScale="0%"
android:fromYScale="0%"
android:toXScale="60%"
android:toYScale="60%"
android:pivotX="50%"
android:pivotY="50%"
/>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:startOffset="100"
android:fromYDelta="0%"
android:toYDelta="-80%"/>
</set>
并在您的代码中设置动画
final Animation animation = AnimationUtils.loadAnimation(this, R.anim.anims);
final ImageView imgLeft = (ImageView) findViewById(R.id.imgLeft);
final EditText et = (EditText) findViewById(R.id.cardnumEditTexst);
et.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
@Override
public void onFocusChange(View v, boolean hasFocus)
{
if (hasFocus)
{
if (et.getText().length() == 0)
{
imgLeft.startAnimation(animation);
}
} else
{
if (et.getText().length() == 0)
imgLeft.clearAnimation();
}
}
});