2015-08-09 3 views
0

Я хочу создать представление с Arc Shape фоне .. мой взгляд имеет вес .3 .. что делает его заполнить одну треть моего макета ..Arc Форма фона Android

я пытаюсь установить свой фон для дуговая форма (я хочу, чтобы это было наполовину овальной формы), как это:

ArcShape shape = new ArcShape(270, 180); 
    ShapeDrawable shapeDrawable = new ShapeDrawable(shape); 
    shapeDrawable.getPaint().setColor(getResources().getColor(R.color.primary_color)); 
    leftPathView.setBackgroundDrawable(shapeDrawable); 

это создает форму, мне нужно, но не заполняет пространство мой взгляд .. она занимает только половину .. но когда Я создаю завершенный круг, который занимает все пространство.

Любая идея?

+0

Избегайте использования постоянных значений пикселей ('270, 180'). Вычислите значения во время выполнения с помощью View.getWith() и View.getHeight() –

+0

Это углы дуги. Посмотрите на конструктор: http://developer.android.com/reference/android/graphics/ drawable/shapes/ArcShape.html –

+0

Неплохо, поэтому, возможно, вам следует использовать метод изменения размера: https://developer.android.com/reference/android/graphics/drawable/shapes/Shape.html#resize(float, float) –

ответ

0

После небольшого исследования я нашел, что это лучший ответ. Особенно, если вы хотите сделать это в своей функции onCreate, bacause, когда функция onCreate не закончилась, макет еще не имеет ширины и высоты (more info here).

final LinearLayout leftPathView= (LinearLayout) findViewById(R.id.left_path_view); 

layout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     leftPathView.getViewTreeObserver().removeOnGlobalLayoutListener(this); 
     leftPathView.setX(-layout.getWidth()); 
     leftPathView.getLayoutParams().width = layout.getWidth() * 2; 
     leftPathView.requestLayout(); 
    } 
}); 

ArcShape shape = new ArcShape(270, 180); 
ShapeDrawable shapeDrawable = new ShapeDrawable(shape); 
shapeDrawable.getPaint().setColor(getResources().getColor(R.color.primary_color)); 
layout.setBackground(shapeDrawable); 

Этот код делает ваш взгляд выйти из границ экрана, поэтому при добавлении других предметов к этому View вы должны принять это во внимание. Решением для этого может быть представление View в RelativeLayout и размещение другого представления поверх левогоPathView.

Смежные вопросы