ComboBox のようなものを作成したかったのですが、TextView 内の右側にある矢印ボタンです。私が今まで見てきたすべてのアプローチは、矢印をテキストフィールドの外側に (追加のボタンとして) 配置します。これは私は好きではありません。それをシミュレートするために、次のようにできると思いました
android:drawableRight="@android:drawable/arrow_up_float"
android:ems="10"
これは見栄えがよく、右側に矢印があります。次のようなグラデーションペイントを後ろに置くことができると思いました:
int witdhComboBox = 50;
@Override
protected void onDraw(Canvas canvas) {
//
Paint paint = new Paint();
final int bottom = getBottom() - 10;
paint.setShader(new LinearGradient(0, 0, 0,bottom,
Color.WHITE,
Color.GRAY,
Shader.TileMode.REPEAT));
canvas.drawRect(new Rect(getRight() - witdhComboBox,
getTop() - getPaddingTop() - getTopPaddingOffset()
+ getBottomPaddingOffset()
+ getPaddingBottom(),
getRight() - 8,
bottom), paint);
super.onDraw(canvas);
}
しかし、明らかに不適切なパディングに苦しんでいます。レイアウト内の不適切な寸法。私が日食にいるとき、私は元気に見えます:
しかし、Galaxy Note に乗ると、狭すぎるように見えます。
HTC Desire では幅が広すぎるように見えます (適切に終了していないため、あまり気にしません):
グラデーションを矢印の真下に配置する良い方法はありますか? 現在、解像度と追加スペースの異なるスタイルの組み合わせの問題だと思います。