-1

私はアンドロイドにかなり新しいです、そして私は別の活動の編集テキストでユーザーによって入力された文字列の長さに基づいてレイアウトに動的に多くの編集テキストを追加しようとしています。最初のアクティビティから次のアクティビティに文字列を渡し、線形レイアウトを垂直に横切る文字列内の各文字のレイアウトにeditTextを追加します。ただし、残念ながら、これらの編集テキストは画面の左端から始まり、追加されると左から右に移動します。単語の文字数に関係なく、これらの編集テキストを中心に配置したいと思います。誰かが私がこれを行う方法を知っていますか?これは、noに基づいて複数の編集テキストを追加するアクティビティのこれまでの私のコードです。文字列内の文字の。

import java.util.ArrayList;
import java.util.List;

import eoin.hangman.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.EditText;
import android.widget.Toast;

public class GameScreen extends Activity {

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


        Intent intent = getIntent();
        String word = intent.getExtras().getString("ans");
        int noofletters = word.length();
        View linearLayout =  findViewById(R.id.info);
       // char[] cArray = word.toCharArray();




          for(int i=0;i<noofletters;i++)
          {
                EditText editText = new EditText(this);
            LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT);
            editText.setLayoutParams(params);
            ((ViewGroup) linearLayout).addView(editText);
            // editText.setText(cArray[i]);
          }
       }
}

また、文字列から各エディットテキストに1文字を追加しようとしましたが、これも機能していないようです。どんな助けでも大歓迎です!

だからiveは私のコードを編集しました。これが私がしたことです。編集テキストボックス用に作成された個別のedttxt.xmlを、次に膨らませます。gscreen.xmlのtablelayout内にすでに設定されている行を含むtablelayout内に作成されます。プログラムでビューを追加する必要がなくなります。これは良いことです。文字列から各エディットテキストに1文字を追加したいのですが、できません。うまくいけば、それを理解するのは病気です。主なものはim学習です。idは少し速く進行するのが好きです。gscreen.xml内のテーブル行にあるandroid:gravity = "center_horizo​​ntal"を使用して、エディットテキストボックスを中央に配置することをほとんど忘れていました。うまくいけば、これは将来誰かを助けるでしょう。

public class GameScreen extends Activity {

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


            Intent intent = getIntent();
            String word = intent.getExtras().getString("ans");   //get string from intent sent to this activity
            int noofletters = word.length();                     //no of letters in string which creates an edittext box for each character.




            LayoutInflater  edit_inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View insertpoint = findViewById(R.id.tablerow);


              for(int i=0;i<noofletters;i++)
              {
                  EditText edtview = (EditText)edit_inflater.inflate(R.layout.edtxt,null);  
                  ((ViewGroup) insertpoint).addView(edtview);

              }
4

2 に答える 2

1

android:layout_gravity="center_horizontal"パラメータは必要なものです。

.inflate()コードから設定することもできますが、コードから新しいEditTextを作成する代わりに、EditTextを含むXMLレイアウトファイルを作成して作成することをお勧めします。これにより、プレゼンテーションがロジックから分離され、XMLを使用して外観を変更するのも簡単になります。

于 2012-07-08T14:00:12.410 に答える
0

重力の問題のためにこれを試してください

 LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT,Gravity.CENTER_HORIZONDAL);

エディットテキスト用

editText.setText(word[i], TextView.BufferType.EDITABLE);

forループ内

于 2012-07-08T14:04:56.087 に答える