私の質問は、AndroidのeditBoxにラベルを配置する方法ですか?
たとえば、オンスクリーンキーボードのバックスペースを押しても削除されない連絡先ピッカーのエディットボックスに「To:」を入れたいと思います。
android:hintを試してみましたが、editBoxをフォーカスまたはクリックすると削除されます。
画像で試してみましたが、見栄えが良くありません。だから、私はこのラベルのものを実装できる方法が必要です。
視覚的な図を参照してください
私の質問は、AndroidのeditBoxにラベルを配置する方法ですか?
たとえば、オンスクリーンキーボードのバックスペースを押しても削除されない連絡先ピッカーのエディットボックスに「To:」を入れたいと思います。
android:hintを試してみましたが、editBoxをフォーカスまたはクリックすると削除されます。
画像で試してみましたが、見栄えが良くありません。だから、私はこのラベルのものを実装できる方法が必要です。
視覚的な図を参照してください
これを行うための 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;
}
次のようなTextView
+EditText
を常に持つことができます。LinearLayout
EditText
<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>
これを試して
<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>
このように追加できます
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_screen);
EditText edittext = (EditText)getViewById(R.id.edittextid);
edittext.setText("To:")
}
その後、アクティビティを開始するたびにテキストが表示されます。
お役に立てば幸いです....
じゃあこれ使って…
<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>
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
に、開発者にとってこれは比較的簡単です。EditText
uses属性はfill_parent
、"To: " ラベルにぴったりと表示されます。
丸められたテキスト ビュー
<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>
Here FrameLayout を使用できます。その中で 3 つのウィジェットを使用できます。
1.テキスト「TO」が設定されたTextView
TextView の隣には、データを入力できる Edittext があります。
最後は十字記号を示す ImageButton です...
角丸長方形でFrameLayoutの背景画像を設定、、、
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TO:"
/>