Bir LinearLayout için bir sınır çizmek için nasıl Android:
Üç dosya var. XML, beraberlik ve ana Faaliyet işlev. XML dosyamda bazı LinearLayout var.
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<LinearLayout android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#ef3"
android:id="@ id/img01"/>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#E8A2B4"
android:id="@ id/img02"/>
</LinearLayout>
Ve, ben çizmek zorunda fonksiyonu.
public class getBorder extends TextView {
public getBorder(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(android.graphics.Color.RED);
canvas.drawLine(0, 0, this.getWidth() - 1, 0, paint);
canvas.drawLine(0, 0, 0, this.getHeight() - 1, paint);
canvas.drawLine(this.getWidth() - 1, 0, this.getWidth() - 1,
this.getHeight() - 1, paint);
canvas.drawLine(0, this.getHeight() - 1, this.getWidth() - 1,
this.getHeight() - 1, paint);
}
}
Ve bu ana faaliyettir.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final getBorder getBorder = new getBorder(this);
final LinearLayout img01 = (LinearLayout) findViewById(R.id.img01);
img01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
getBorder.setWidth(100);
getBorder.setHeight(100);
img01.addView(getBorder);
}
});
}
Program sınır çizebilir ama boyutu LinearLayout uymadı. Ve ben LinearLayout yeniden tıklatın, program ezilmiş. Biri bana yardım edebilir mi? Başka bir şey, iki daire çizin LinearLayout merkezinde istiyorum, ama nasıl anlamaya merkezi koordinatları alabilir miyim?
CEVAP
Gerçekten Program aracılığıyla bunu yapmak zorunda mı?
Sadece Başlığı dikkate alarak: android:... arka plan olarak bir ShapeDrawable kullanabilirsiniz
Örneğin, gibi res/drawable/my_custom_background.xml
tanımlayalım:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="2dp"
android:topRightRadius="0dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" />
<stroke
android:width="1dp"
android:color="@android:color/white" />
</shape>
ve tanımlamak android:background="@/my_custom_background". drawable
Ama çalışması lazım test ettim.
Güncelleme:
Bu daha iyi, eğer bu sizin ihtiyaçlarınıza uygun eğer xml şekli drawable resource güç kaldıraç bence. "En baştan" projesi (android-8), res/layout/main.xml define . bir ile
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/border"
android:padding="10dip" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World, SOnich"
/>
[... more TextView ...]
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello World, SOnich"
/>
</LinearLayout>
ve bir res/drawable/border.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke
android:width="5dip"
android:color="@android:color/white" />
</shape>
Rapor zencefilli bir cihaz üzerinde çalışmak için. android:width
şekil/vuruş değeri LinearLayout android:padding
ilişkilendirmek gerekir unutmayın. Lütfen, son uygulama ama bir proje renk tanımlı değil @android:color/white
kullanmayın.
Sağlanan örnek gelen LinearLayout her android:background="@drawable/border" android:padding="10dip"
uygulamak olabilir.
- Diğer mesajlar ile ilgili görünen bazı çevreler gibi LinearLayout arka plan, oynuyorum ile Daraltma/Ölçek/Katman drawable kaynakları (see Drawable Resources daha fazla bilgi) bir çalışma için görüntü mükemmel daireler arka planda bir LinearLayout ama başarısız oldu şu anda...
Sorununuzu açıkça getBorder.set{Width,Height}(100);
kullanımı bulunur. Neden özelliği bir yöntem olarak bunu yapıyorsun?
Daha fazla bilgi nokta kaçırmamak lazım: neden bu program aracılığıyla yapıyorsunuz? Dinamik bir davranış mı ihtiyacınız var? Giriş drawables png veya ShapeDrawable kabul edilebilir mi? vb.
Devam edecek (yarın belki ve ne elde etmek istediğinizi hakkında daha fazla duyarlılıklar verdiğiniz bitmez)...
nasıl bir android textview etrafında b...
Nasıl android bir çizgi çizmek için...
Nasıl sınır çizmek için lineer bir düz...
Nasıl bir UİLabel etrafında bir sınır ...
Nasıl vurgulama gibi açıklama yapmak, ...