1

大きな連絡先の写真を表示する連絡先アプリを作成しています。ボタンの上部(下部近く)に各連絡先の連絡先名を記載したラベルを追加する必要がありますが、2つのビューを重ねて表示する方法がわかりません。ラベルに半透明の背景を追加する必要があるため、単純にsettextを使用することはできません。


編集:私はそれを上に置くことができましたが、ボタンの下部にそれを得る方法を理解できません。

RelativeLayout icon = new RelativeLayout(context);
// Create button
Button button = new Button(context);
button.setLayoutParams(new    LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
layout.addView(button);
// Create label
TextView label = new TextView(context);
label.setText(name);
label.setBackgroundColor(Color.argb(120, 0, 0, 0));
label.setLayoutParams(new      LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
icon.addView(button);
icon.addView(label);

ただし、テキストは画像の上部に表示されるので、次のように下部に表示します。

ここに画像の説明を入力してください

xmlの場合、これは次のようになります。android:layout_alignBottom="@+id/myButton"しかし、私はこれをプログラムで実行していて、それを実行する方法を見つけていません。ボタンの近くにラベルを配置するにはどうすればよいですか?

4

2 に答える 2

2

これを試して

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center" >

        <Button
            android:id="@+id/button1"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:text="John"
            android:background="@drawable/button_action_active" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="test textView" />

    </FrameLayout>

</LinearLayout>

上記のコードのサンプルスクリーンショット

動的に行うことができます

 TextView lable = new TextView(this);  
        lable.setLayoutParams(new LayoutParams(android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));  
        lable.setTextSize(25);  
        lable.setGravity(Gravity.CENTER);  
        lable.setText("John");  


        Button button = new Button(this);  
        button.setBackgroundResource(R.drawable.button_action_active);  
        button.setLayoutParams(new LayoutParams(android.widget.LinearLayout.LayoutParams.MATCH_PARENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT));  

        FrameLayout fl = new FrameLayout(this);  
        fl.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));  
        fl.addView(button);  
        fl.addView(lable);  

        setContentView(fl); 
于 2013-01-30T22:12:28.827 に答える
-1

これを行うには、フレーム レイアウトを使用できます。フレーム レイアウトのドキュメントは、http://developer.android.com/reference/android/widget/FrameLayout.htmlにあります。

ただし、フレーム レイアウトは減価償却されています (私の記憶が正しければ)。代わりに、相対レイアウトを使用することをお勧めします。相対レイアウトでは、ボタンの位置を設定してから、テキストビューに属性android:layout_alignLeft=@id/somethingandroid:layout_alignRight="@id/Something"

于 2013-01-30T22:15:46.027 に答える