2016-11-20 7 views
0

я создаю массив ListView из из LinearLayout программно и я хочу, чтобы сделать скругленные углы, поэтому я создал Drawable ресурс, как этотМарка округляется LinearLayout

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <corners android:radius="40dp" 
     /> 

    <padding 
     android:top="2dp" 
     android:bottom="2dp" 
     android:left="2dp" 
     android:right="2dp"/> 
</shape> 

Код на LinearLayout это

LinearLayout linearLayout= new LinearLayout(getContext()); 
      linearLayout.setOrientation(LinearLayout.VERTICAL); 

     LinearLayout.LayoutParams layout= new LinearLayout.LayoutParams(
       200, 
       100 
     ); 


     layout.setMargins(20,20,20,20); 

     linearLayout.setLayoutParams(layout); 
     linearLayout.setBackgroundColor(Color.BLUE); 
     linearLayout.setBackgroundResource(R.drawable.rounded); 
     linearLayout.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       Log.i("Test selected",""); 
       v.setBackgroundColor(Color.RED); 

       return false; 
      } 
     }); 

Проблема в том, что форма элементов не закруглена. Где моя ошибка? Спасибо всем, кто сожалеет о моем английском.

ответ

1

Чтобы сделать макет, имеющим круглый углом:

  1. Вы должны определить файл XML, имеющий свойство круглого угла, имеющее имя rounded.xml в разрешении/вытяжка (Вы можете сохранить любое имя)

    форма XMLNS: андроид = "http://schemas.android.com/apk/res/android" андроид: форма = "прямоугольник">

    <gradient 
        android:endColor="#000000" 
        android:startColor="#000000"/> 
    
    <corners 
        android:bottomRightRadius="7dp" 
        android:bottomLeftRadius="7dp" 
        android:topLeftRadius="7dp" 
        android:topRightRadius="7dp"/> 
    

  2. Определите вашу деятельность как:

    LinearLayout linearLayout; 
    
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
    
        linearLayout= new LinearLayout(getApplicationContext()); 
        linearLayout.setOrientation(LinearLayout.VERTICAL); 
    
    //Use framelayout.layoutparams not linearlayout.layoutparams 
        FrameLayout.LayoutParams layout= new FrameLayout.LayoutParams(200,100); 
    
    //Use setContentView to show this layout in your activity 
        setContentView(linearLayout,layout); 
    
        layout.setMargins(50,50,50,50); 
    
        linearLayout.setLayoutParams(layout); 
        linearLayout.setBackgroundColor(Color.BLUE); 
        linearLayout.setBackgroundResource(R.drawable.rounded); 
        linearLayout.setOnTouchListener(new View.OnTouchListener() { 
    
        @Override 
        public boolean onTouch(View v, MotionEvent event) { 
         Log.i("Test selected",""); 
         v.setBackgroundColor(Color.RED); 
    
         return false; 
        } 
    }); 
    

Я проверил с:

 FrameLayout.LayoutParams layout= new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 

И цвет макета установлен в черный rounded.xml

И выход:

Output