0

EditText ボックスの異なる行を異なる (背景) 色でマークしようとしています。つまり、行 1 - 青、行 2 - 黒などです。背景の ListView の適切なテキスト ボックスに色を塗りつぶすことでこれを実現します。EditText は行のみの背景色を設定できる方法を提供していないため、私はこれを行っています (知っている場合は誰でも方法を提供してください)。ユーザーが EditText ボックスをスクロールするたびに、ListView も同じ量だけスクロールして、それらが一緒に移動し、EditText ボックスの行が対応する背景色で設定されているように感じます。

私が直面する唯一の問題は、ListView が上下にスクロールするときに、表示される新しい行 (ListView 内) (表示されている行の下にある行) に色が設定されていないことです。ListView が表示されている新しい行 (テキスト ボックス) を描画していないようです。これは、ListView が EditText の背景にあるためですか (下に ListView を配置し、上に EditText を配置して相対レイアウトを使用しています)。表示される新しい行について、スクロールしてもListViewを正しい色で塗りつぶす方法はありますか?

ありがとう。

編集: 要求されたコード: これは、layout.xml のエントリです:

<RelativeLayout
    android:id="@+id/container1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1" 
    >
    <ListView android:id="@+id/bgLv1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:dividerHeight="0dp"
        android:divider="@null"
        />
    <EditText android:id="@+id/et1" android:layout_gravity="left" android:layout_height="match_parent" android:layout_width="match_parent" android:text="" android:gravity="center" android:background="@drawable/textbox_border"></EditText>
</RelativeLayout>

編集 2: ListAdapter コードの投稿: ここで b はブール配列で、どちらをチェックすると、線の色が決定されます。

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class BackgroundListAdapter extends ArrayAdapter<String>
{
    private boolean b[];
    private Context context;

    BackgroundListAdapter(Context c, int a)
    {
        super(c,a);
        context = c;
    }
    BackgroundListAdapter(Context c, int a, int b)
    {
        super(c,a,b);
        context = c;
    }
    BackgroundListAdapter(Context c, int a, int b, List<String> l)
    {
        super(c,a,b,l);
        context = c;
    }
    BackgroundListAdapter(Context c, int a, int b, String[] s)
    {
        super(c,a,b,s);
        context = c;
    }
    BackgroundListAdapter(Context c, int a, List<String> l)
    {
        super(c,a,l);
        context = c;
    }
    BackgroundListAdapter(Context c, int a, String[] s)
    {
        super(c,a,s);
        context = c;
    }
    BackgroundListAdapter(Context c, boolean[] b)
    {
        super(c,R.layout.listview_background,new String[b.length]);
        context = c;
        this.b = b;
    }

    public View getView(int position, View convertView, ViewGroup parent)
    {
        View rowView = convertView;
        if (rowView == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            rowView = inflater.inflate(R.layout.listview_background, null);
            rowView.setTag(new ViewHolder((TextView) rowView.findViewById(R.id.listBackgroundTV)));
        }

        ((ViewHolder)rowView.getTag()).tv.setHeight((position != 0)?((TextBox)((Activity)context).findViewById(R.id.ctb1)).getLineHeight():((TextBox)((Activity)context).findViewById(R.id.ctb1)).getLineHeight() + (int) (context.getResources().getDisplayMetrics().density + 0.5f));
        ((ViewHolder)rowView.getTag()).tv.setBackgroundColor((b[position])?0xff000000:0xffffffff);

        return rowView;
    }
}

class ViewHolder
{
    public TextView tv;

    ViewHolder(TextView tv)
    {
        this.tv = tv;
    }
}

編集 3: onCreate メソッド:

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    et1 = (EditText)findViewById(R.id.et1);
    et1.setText(inpStr);
    final ListView lv1 = ((ListView)findViewById(R.id.bgLv1));
    final BackgroundListAdapter bla = new BackgroundListAdapter(this,colorLines);
    lv1.setAdapter(bla);
}
4

1 に答える 1

0

これは、テーブルの長方形を描く方法です

<?xml version="1.0" encoding="utf-8"?>
<shape
  xmlns:android="http://schemas.android.com/apk/res/android"
android:shape= "rectangle"  >
        <solid android:color="#FFFFFF"/>
        <stroke android:width="1dp"  android:color="#000000"/>
</shape>
于 2013-07-02T15:38:12.083 に答える