0

私は検索して検索しましたが、何らかの理由でそれを機能させることができないようです。

私が現在行っているのは、スピナーで選択したアイテムに基づいて、テキストも設定するx個のTextViewを作成する構成クラスがあることです。したがって、これらのTextViewを.xmlファイルに作成することはできません。それまで必要な数がわからないため、実行時に作成する必要があります。これらのTextViewは、構成クラスの[ウィジェットの追加]ボタンを押したときにウィジェットが作成されたときに表示されるように、ウィジェットに追加する必要があります。相対レイアウト内の水平線形レイアウト内に含まれているウィジェットの垂直線形レイアウトにテキストビューを追加したいと思います。

これまでのところ、TextViewを作成して適切なテキストを設定することはできましたが、何を試しても、実際に表示されるようにウィジェットに追加する方法がわかりません。ウィジェットのレイアウトを膨らませ、IDを取得して追加し、RemoteViewをいじってみました。これはウィジェットであり、それが本来の方法であることに気付いたからです。コードから1つのTextViewを作成しようとしても、追加したくなるようなものは何もないようです。自分自身と指定したsetTextを表示することができません。

私はandroid2.2btwで作業していますが、これは私の最初のandroidアプリ/ウィジェットです。どこかで愚かな間違いを犯しているので、残忍になりすぎないでください...

私をより良くするためにコード例が必要な場合は、lemmeが知っているので、後で追加してみてください。今、私はコードにアクセスできないコンピューターで助けを求めています:)

お時間を割いていただき、誠にありがとうございます!誰かがこれを成し遂げるために私がしなければならないことを教えてくれることを願っています。またはそれが可能かどうか:S / Chris

編集:

これは、iveがそれを機能させるために試みたものの1つですが、ウィジェットを使用しているので、これは機能しないと思います。リモートビューを使用して、どういうわけかそれを実行する必要がありますか?よく読んだことから、リモートビューはxmlで生成されたコードでのみ機能するようです。それが本当の場合、どうすればテキストビューを作成してウィジェットに追加できますか?:S

//the context c is defined as this, elsewhere:
c = WidgetConfig.this;

public void createPopulateTable(RemoteViews rv){

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.widget, null);

LinearLayout vll1 = (LinearLayout)layout.findViewById(R.id.wVertLinearL1);

// Create a TextView for the left column
TextView wLabelTv = new TextView(c);
wLabelTv.setId(200);
wLabelTv.setTextColor(Color.BLACK);
wLabelTv.setLayoutParams(new LayoutParams(
    LayoutParams.WRAP_CONTENT,
    LayoutParams.WRAP_CONTENT));
wLabelTv.setText("No Classes Today");
vll1.addView(wLabelTv);
}
4

2 に答える 2

0

必要な量のTextViewを動的に作成するというアイデアを捨ててしまい、代わりにxmlで基本的なレイアウトを作成しました。これにより、(反復を通じて)必要なテキストとフォーマットを設定し、xml全体を追加するだけで済みます。何度も何度もファイルします:)

必要な各行には、常にテキストビューと3つのイメージビューが含まれていました。そのスケルトンを新しいxmlファイルで作成しました。そして、コードでそれらを必要なものに設定し、メインレイアウトに行を追加しました。必要な行ごとにこれを行いました。

于 2012-07-11T00:17:19.810 に答える
0
Hi Chris below is a resouce I developed to dynamically generate spinners and edit texts which are added to a linear layout hope it helps. This function

要素のプロパティを操作するために使用できる一意のIDを要素に与えます

 /*Dynamic function*/
    public void dynaGen(LinearLayout tbl, ArrayList<Integer> ida, ArrayList<Integer> idab, ArrayList<Integer> idac,
                          ArrayList<Integer> idad, ArrayList<Integer> idae, ArrayList<Integer> idaf, final double eunica) {
        ArrayList<Integer> uniqid = new ArrayList<>();
        ArrayList<String> products = resocs.getallPRD();

        for (int i = 0; i < 6; ++i) {
            uniqid.add(Resources.generateViewId());
        }


        LayoutInflater inflater = (LayoutInflater) ordContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View cont = inflater.inflate(R.layout.order_pluxo, null);

        View child = ((ViewGroup) cont).getChildAt(0);
        Spinner prduct = (Spinner) child;
        prduct.setId(Math.abs(uniqid.get(0)));
        prduct.setPadding(0, 10, 0, 10);
        prduct.setAdapter(new ArrayAdapter(ordContext, R.layout.spinresoc, products) {
            public View getDropDownView(int v, View view, ViewGroup viewGroup) {
                TextView textView = (TextView) super.getDropDownView(v, view, viewGroup);
                textView.setTextSize((float) eunica + 5.0f);
                return textView;
            }

            public View getView(int v, View view, ViewGroup viewGroup) {
                TextView textView = (TextView) super.getView(v, view, viewGroup);
                textView.setTextSize((float) eunica + 5.0f);
                return textView;
            }
        });
        prduct.setOnItemSelectedListener((AdapterView.OnItemSelectedListener) ordContext);
        resocs.spinMod(prduct, eunica);

        View childb = ((ViewGroup) cont).getChildAt(1);
        EditText quanty = (EditText) childb;
        quanty.setId(Math.abs(uniqid.get(1)));
        quanty.setHint("Quantity");
        quanty.setTextSize((float) eunica + 5.0f);
        quanty.addTextChangedListener((TextWatcher) ordContext);

        View childc = ((ViewGroup) cont).getChildAt(2);
        EditText price = (EditText) childc;
        price.setId(Math.abs(uniqid.get(2)));
        price.setHint("Price");
        price.setTextSize((float) eunica + 5.0f);

        View childd = ((ViewGroup) cont).getChildAt(3);
        EditText vat = (EditText) childd;
        vat.setId(Math.abs(uniqid.get(3)));
        vat.setHint("VAT");
        vat.setTextSize((float) eunica + 5.0f);

        View childe = ((ViewGroup) cont).getChildAt(4);
        EditText discount = (EditText) childe;
        discount.setId(Math.abs(uniqid.get(4)));
        discount.setHint("Discount");
        discount.setTextSize((float) eunica + 5.0f);
        discount.addTextChangedListener((TextWatcher) ordContext);

        View childf = ((ViewGroup) cont).getChildAt(5);
        EditText total = (EditText) childf;
        total.setId(Math.abs(uniqid.get(5)));
        total.setHint("Total");
        total.setTextSize((float) eunica + 5.0f);


        tbl.addView(cont, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT));

        ida.add(prduct.getId());
        idab.add(quanty.getId());
        idac.add(price.getId());
        idad.add(vat.getId());
        idae.add(discount.getId());
        idaf.add(total.getId());

    }

/*XML resource*/
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.flexbox.FlexboxLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    app:alignContent="flex_start"
    app:alignItems="flex_start"
    app:flexDirection="row"
    app:flexWrap="nowrap">

    <Spinner
        android:layout_width="wrap_content"
        android:layout_height="40.0dip"
        android:background="@drawable/spintleric"
        android:minWidth="100.0dip"
        android:padding="10.0dip"
        android:popupBackground="@drawable/spinback_resoc"
        app:layout_flexBasisPercent="35.000004%"
        app:layout_flexGrow="1.5" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/edtxtdta_resoc"
        android:gravity="center"
        android:minWidth="100.0dip"
        android:padding="10.0dip"
        android:textColor="#ff000000"
        android:hint="@string/ordestringc"
        app:layout_flexBasisPercent="20.0%"
        app:layout_flexGrow="1.5" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/edtxtdta_resoc"
        android:gravity="center"
        android:minWidth="100.0dip"
        android:padding="10.0dip"
        android:textColor="#ff000000"
        android:editable="false"
        android:hint="@string/ordestringd"
        app:layout_flexBasisPercent="20.0%"
        app:layout_flexGrow="1.5" />

    <EditText
        android:id="@+id/ordedtxtb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/edtxtdta_resoc"
        android:gravity="center"
        android:minWidth="100.0dip"
        android:editable="false"
        android:padding="10.0dip"
        android:textColor="#ff000000"
        android:hint="@string/ordestringe"
        app:layout_flexBasisPercent="20.0%"
        app:layout_flexGrow="1.5" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/edtxtdta_resoc"
        android:gravity="center"
        android:minWidth="100.0dip"
        android:padding="10.0dip"
        android:textColor="#ff000000"
        android:hint="@string/ordestringf"
        app:layout_flexBasisPercent="20.0%"
        app:layout_flexGrow="1.5" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/edtxtcomb_resoc"
        android:gravity="center"
        android:minWidth="100.0dip"
        android:padding="10.0dip"
        android:editable="false"
        android:textColor="#ff000000"
        android:hint="@string/ordestringg"
        app:layout_flexBasisPercent="20.0%"
        app:layout_flexGrow="1.5" />
</com.google.android.flexbox.FlexboxLayout>
于 2018-07-13T06:54:47.830 に答える