13

私の質問は、AndroidのeditBoxにラベルを配置する方法ですか?

たとえば、オンスクリーンキーボードのバックスペースを押しても削除されない連絡先ピッカーのエディットボックスに「To:」を入れたいと思います。

android:hintを試してみましたが、editBoxをフォーカスまたはクリックすると削除されます。

画像で試してみましたが、見栄えが良くありません。だから、私はこのラベルのものを実装できる方法が必要です。

視覚的な図を参照してください必要な設計

4

9 に答える 9

13

これを行うための 2 つのアイデアを紹介します。

これがいくつかの場所でのみ必要な場合は、FrameLayout / マージを使用して、EditText に TextView を配置できます。次に、編集テキストにパディングを使用して、TextView が EditText の「内側」にあるように見せることができます。:

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

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="40dp" >

        <requestFocus />
    </EditText>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:paddingLeft="10dp"
        android:text="To : " />
</FrameLayout>

それ以外の場合は、独自のクラスを作成して、独自のバージョンの EditText を実装できます。これは基本的な例です。少し調整する必要があります。

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.widget.EditText;

public class LabelledEditText extends EditText {

    public LabelledEditText(Context context) {
        super(context);
        mPaddingLeft = getPaddingLeft();
    }

    public LabelledEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        mPaddingLeft = getPaddingLeft();
    }

    protected void onDraw(Canvas canvas) {
        TextPaint textPaint = getPaint();
        Rect size = new Rect();
        textPaint.getTextBounds(mLabel, 0, mLabel.length(), size);
        setPadding(mPaddingLeft + size.width(), getPaddingTop(), getPaddingRight(), getPaddingBottom());
        super.onDraw(canvas);

        canvas.drawText(mLabel, mPaddingLeft + size.left, size.bottom + getPaddingTop(), textPaint);
    }


    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }

    private String mLabel = "To :  ";
    private int mPaddingLeft;

}
于 2012-06-18T12:36:26.620 に答える
10

次のようなTextView+EditTextを常に持つことができます。LinearLayoutEditText

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:drawable/edit_text" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="To:" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="3dp"
        android:background="@null" />
</LinearLayout>
于 2012-06-18T12:30:27.323 に答える
1

これを試して

<LinearLayout
    android:id="@+id/linearLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp" >

    <RelativeLayout
        android:id="@+id/linearlayout2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:text="To:" />

        <EditText
            android:id="@+id/editTextTo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            android:background="@android:color/transparent"
            android:hint="Type your text..."
            android:singleLine="true"
            android:textColor="#000000" />
    </RelativeLayout>
</LinearLayout>
于 2012-06-18T12:14:27.970 に答える
0

このように追加できます

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_screen);

EditText edittext = (EditText)getViewById(R.id.edittextid); 
edittext.setText("To:") 
}

その後、アクティビティを開始するたびにテキストが表示されます。

お役に立てば幸いです....

于 2012-06-18T12:11:41.037 に答える
0

じゃあこれ使って…

<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >



        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TO:"    
            />
    </LinearLayout>
于 2012-06-18T12:09:33.353 に答える
0

Android では、ラベルは次のように呼ばれTextViewます。

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

            <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="To:"
            />

            <EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
            />
        </LinearLayout>

EditTextにはラベルがないため、両方が必要です。ありがたいことViewGroupに、開発者にとってこれは比較的簡単です。EditTextuses属性はfill_parent、"To: " ラベルにぴったりと表示されます。

于 2012-06-18T12:09:01.983 に答える
0

丸められたテキスト ビュー


<LinearLayout
    android:id="@+id/linearLayoutSearch"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent"
    android:padding="5dp" >

    <RelativeLayout
        android:id="@+id/linearlayout2"
        android:layout_width="fill_parent"
        android:layout_height="36dp"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:background="@drawable/rounded_textview"
        android:paddingLeft="5dp" >

        <TextView
            android:layout_width="22dp"
            android:layout_height="22dp"
            android:layout_centerVertical="true"
            android:alignParentLeft="true"
            android:text="To:" />

        <EditText
            android:id="@+id/search"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="25dp"
            android:layout_marginRight="25dp"
            android:background="@android:color/transparent"
            android:hint="Enter your text..."
            android:imeOptions="actionDone"
            android:singleLine="true"
            android:textColor="#000000" />
        <ImageView
            android:layout_width="22dp"
            android:layout_height="22dp"
            android:layout_centerVertical="true"
            android:alignParentRight="true"
            android:src="@drawable/stop" />
    </RelativeLayout>
</LinearLayout>

rounded_textview.xml

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

<solid android:color="#FFFFFF" />

<corners
    android:bottomLeftRadius="15dp"
    android:bottomRightRadius="15dp"
    android:topLeftRadius="15dp"
    android:topRightRadius="15dp" />

</shape>
于 2012-06-19T05:17:05.290 に答える
0

Here FrameLayout を使用できます。その中で 3 つのウィジェットを使用できます。

1.テキスト「TO」が設定されたTextView

  1. TextView の隣には、データを入力できる Edittext があります。

  2. 最後は十字記号を示す ImageButton です...

角丸長方形でFrameLayoutの背景画像を設定、、、

于 2012-06-18T12:54:43.097 に答える
-1
    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TO:"    
        />
于 2012-06-18T12:45:39.873 に答える