2014-05-14 4 views
0

Привет, я пытаюсь установить фоновое изображение на LinearLayout, сначала мне нужно сделать его округленным, что я сделал с помощью тега shape и позвонил setBackgroundResource, чтобы сделать его округленным но теперь, как я должен установить любую вытяжку также во время выполнения на одном LinearLayoutКак установить фон + закругленная форма линейного макета во время выполнения

layout_rounded.xml

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#FFFFFF"/> 
    <stroke android:width="3dip" android:color="#B1BCBE" /> 
    <corners android:radius="10dip"/> 
    <padding android:left="0dip" android:top="0dip" android:right="0dip" android:bottom="0dip" /> 
</shape> 

, и я сделал это

linearLayout.setBackgroundResource(R.drawable.layout_rounded); 

Здесь, чтобы установить фон на LinearLayout, тогда я должен позвонить setBackgroundDrawable, но после вызова этого параметра он будет установлен, но снова он отключит форму .

Я не имею, что рисует в разрешении, что фон я получаю от URL затем пытается установить

Можете ли вы посмотрите, как достичь этого?

Заранее спасибо

+0

Вы устанавливаете фон в самом 'layout_rounded.xml' .. – Lal

+0

@Lal У меня нет того, что можно вытащить в' res', этот фон, который я получаю от URL-адреса –

+0

Сначала ясно, что вы собираетесь установить 'Image' или' rounded_xml'? –

ответ

0

Наконец я сделал это просто сделать растровое изображение для округлой формы. Теперь нет необходимости указывать, что форма LinearLayout округлена, потому что растровое изображение, которое я устанавливаю на LinearLayout, имеет закругленную форму, которая делает округлую форму LinearLayout.

import android.content.res.Resources; 
import android.graphics.Paint; 
import android.graphics.BitmapShader; 
import android.graphics.RectF; 
import android.graphics.Bitmap; 
import android.graphics.Canvas; 
import android.graphics.Shader; 
import android.graphics.drawable.BitmapDrawable; 

public class RoundedCornersDrawable extends BitmapDrawable { 

    private final BitmapShader bitmapShader; 
    private final Paint p; 
    private final RectF rect; 
    private final float borderRadius; 

    public RoundedCornersDrawable(final Resources resources, final Bitmap bitmap) { 
    super(resources, bitmap); 
    bitmapShader = new BitmapShader(getBitmap(), Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); 
    final Bitmap b = getBitmap(); 
    p = getPaint(); 
    p.setAntiAlias(true); 
    p.setShader(bitmapShader); 
    final int w = b.getWidth(); 
    final int h = b.getHeight(); 
    rect = new RectF(0, 0, w, h); 
    borderRadius = 0.15f * Math.min(w, h); 
    } 

    @Override 
    public void draw(final Canvas canvas) { 
    canvas.drawRoundRect(rect, borderRadius, borderRadius, p); 
    } 
} 

Это то, что полезно для меня и работало на то, что я искал.

1

Использование Shape в андроиде, чтобы округлая углы

создать файл XML с именем как roundcorner.xml

<?xml version="1.0" encoding="utf-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
     <solid android:color="#33DDFF" /> 
     <corners android:radius="4dp" /> 
    </shape> 

В вашем ImageButton добавить этот атрибут android:background="@drawable/roundcorner"

<ImageButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/imageButton" 
       android:layout_marginTop="57dp" 
       android:src="@drawable/friends" 
       android:background="@drawable/roundcorner" 
       android:padding="1dp" 
       android:layout_alignParentTop="true" 
       android:layout_toLeftOf="@+id/imageButton2" 
       android:layout_marginRight="62dp" /> 

ИЛИ

вид использования заданного изображения android:src = "your image", android:background= "your shape " и android:clickable="true"

+0

он устанавливает цвет фона с помощью 'setColor', который я не ищу –

+0

См. Мое редактирование @Williams – Lal

+0

нет метода' setBackgrounddrawable' на объекте GradientDrawable, см. В документах –

0
// Try this way,hope this will help you.. 

Note Here i used FrameLayout insted of LinearLayout due to achieved your requiremt. 

**activity_main.xml** 

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/frame" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 


</FrameLayout> 

**MainActivity.java** 

public class MainActivity extends Activity { 

    FrameLayout frame; 
    protected void onCreate(Bundle paramBundle) { 
     super.onCreate(paramBundle); 
     setContentView(R.layout.activity_main); 
     frame = (FrameLayout) findViewById(R.id.frame); 
     frame.setBackgroundResource(R.drawable.layout_round); // set your rounded background here 
     frame.setForeground(getResources().getDrawable(R.drawable.ic_launcher)); // set your background image here 
    } 


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