Когда я рисую DrawingCache TextView на другой холст View, гравитация TextView не влияет на вертикальное направление.TextViews Гравитация не работает вертикально
Здесь класс рисования TextViews холст собственный холст:
public class GravityDecorator extends View{
private View view;
private Paint paint= new Paint();
public GravityDecorator(View view,Context context) {
super(context);
this.view = view;
view.setDrawingCacheEnabled(true);
view.layout(0, 0,600,500);
this.layout(0, 0,600,500);
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
view.buildDrawingCache();
canvas.drawBitmap(view.getDrawingCache(), 0, 0, paint);
view.destroyDrawingCache();
}
}
Вот код, чтобы проверить его (OnCreate):
ViewGroup root = (ViewGroup) findViewById(R.id.root); // is a linear_layout - width and height is match_parent
TextView tv = new TextView(getApplicationContext());
tv.setText("Hello World!");
tv.setTextSize(40.0f);
tv.setLayoutParams(new LinearLayout.LayoutParams(300,200));
tv.setTextColor(Color.WHITE);
tv.setBackgroundColor(Color.parseColor("#3131c5"));
tv.setGravity(Gravity.CENTER);
GravityDecorator gd = new GravityDecorator(tv, getApplicationContext());
root.addView(gd);
Как вы видите, Серьезность содержания TextViews вступает в силу только в горизонтальном направлении.
В чем причина и как обойти это, если это ошибка?
Спасибо
Это нарисует содержимое TextView в центре, но размер теперь как «wrap_content». Я хочу реализовать класс, который украсит каждый вид рамкой (сверху, влево, вправо, снизу или закруглен). Таким образом, этот класс является просто примером для демонстрации поведения без использования всего другого кода. Мой класс, чтобы украсить виды с помощью пограничных работ, включая прокладку и маржу, - но гравитация нет. – steffka
Растровое изображение, которое вы получаете, является той же самой высотой, которую вы предоставляете внутри параметров макета tv.setLayoutParams (новые LinearLayout.LayoutParams (300,200)); – Triode
О, хорошо. я пропустил это. Большое спасибо! – steffka