XML ファイルを持たないアプリケーションを作成したいと考えています。グリッドビューの画像とテキストが動的に追加され、テキストが画像の上にあるように見えるようにしたい..そして、すべてでそれが欲しい..画像の上に画像の名前があるギャラリーのように見えると言えます。
だから私を助けてください..
よろしくお願いします。
XML ファイルを持たないアプリケーションを作成したいと考えています。グリッドビューの画像とテキストが動的に追加され、テキストが画像の上にあるように見えるようにしたい..そして、すべてでそれが欲しい..画像の上に画像の名前があるギャラリーのように見えると言えます。
だから私を助けてください..
よろしくお願いします。
(単一のxmlファイル)main.xmlがなくても、なぜこれが必要なのかわかりません。従う必要のある手順は次のとおりです。
次のようにLayoutParamsを使用して動的にレイアウトを作成します。
パブリッククラスMainActivityはActivity{を拡張します
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutParams params=new GridView.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
GridView layout=new GridView(this);
layout.setNumColumns(9);
layout.setAdapter(new CustomAdapter(this));
}
次に、要件に応じてCustomAdapterクラスを定義します。あなたが言ったように、画像の上にテキストが必要なので、各グリッドアイテムには画像付きのテキストビューが含まれているはずです。このグリッドアイテムは、setOrientation(LinearLayout.VERTICAL) を使用したlinearlayoutで実現でき、そのようなタイプのアイテムをすべてグリッドビューに追加できます。
このリンクは、カスタムアダプタクラスを作成する方法の基本的なアイデアを提供します。ただし、あなたの場合、XMLではなく動的にグリッドアイテムを定義します。他の人があなたの必要なコードを完全に書くことは難しいので、私はあなたにあなたの要件を達成するための提案をしました。
Finally I made it on my own. And sharing to all if some one want to use it.
package com.example.customlayout;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.WindowManager;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
int i,j;
int counter=0;
boolean flag=false;
int tid=55523,cid=25;
int imid=55423,l_id=0;
SharedPreferences settings;
String [] values= new String[]{"Sample1","Sample2","Sample3","Sample4","Sample5","Sample6","Sample7","Sample8","Sample9","Sample10","Sample11","Sample12","Sample13","Sample14","Sample15","Sample16","Sample17","Sample18","Sample19","Sample20"};
private Integer[] mThumbIds = {
R.drawable.sample_1, R.drawable.sample_2,
R.drawable.sample_3, R.drawable.sample_4,
R.drawable.sample_5, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_1, R.drawable.sample_2,
R.drawable.sample_3, R.drawable.sample_4,
R.drawable.sample_5, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
};
int pos=0;
public static ArrayList<Integer> check = new ArrayList<Integer>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ScrollView sc = new ScrollView(getApplicationContext());
sc.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
LinearLayout ll = new LinearLayout(getApplicationContext());
ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
ll.setOrientation(LinearLayout.VERTICAL);
for( i = 0;i<10;i++)
{
final LinearLayout ll1 = new LinearLayout(getApplicationContext());
ll1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
ll1.setOrientation(LinearLayout.HORIZONTAL);
for(j = 0;j<2;j++)
{
ll1.addView(rowView(getApplicationContext()));
}
ll.addView(ll1);
}
sc.addView(ll);
this.setContentView(sc);
}
private View rowView(Context context) {
// TODO Auto-generated method stub
WindowManager mWinMgr = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
int displayWidth = mWinMgr.getDefaultDisplay().getWidth();
final LinearLayout ll1 = new LinearLayout(getApplicationContext());
ll1.setLayoutParams(new LayoutParams((displayWidth/2), LayoutParams.WRAP_CONTENT));
ll1.setOrientation(LinearLayout.VERTICAL);
ll1.setId(l_id);
final LinearLayout ll2 = new LinearLayout(getApplicationContext());
ll2.setLayoutParams(new LayoutParams((displayWidth/2), LayoutParams.WRAP_CONTENT));
ll2.setOrientation(LinearLayout.HORIZONTAL);
ll2.setId(l_id);
final TextView tv = new TextView(context);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
tv.setId(tid--);
tv.setPadding(20, 0, 0, 0);
tv.setText(values[pos]);
final CheckBox cb = new CheckBox(getApplicationContext());
cb.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
cb.setId(cid--);
cb.setTag(counter);
for(int x = 0 ; x < check.size(); x++)
{
if(check.contains(counter))
{
cb.setChecked(true);
}
}
counter++;
cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked){
Integer pos1= (Integer) buttonView.getTag();
check.add(pos1);
Log.i("TAG_3", ""+pos1);
}else{
Integer pos2= (Integer) buttonView.getTag();
if(check.contains(pos2))
{
check.remove(pos2);
Log.i("TAG", ""+pos2+"removed");
}
}
}
});
final ImageView img = new ImageView(context);
img.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
img.setId(imid--);
img.setScaleType(ImageView.ScaleType.CENTER_CROP);
img.setPadding(8, 8, 8, 8);
img.setImageResource(mThumbIds[pos]);
pos++;
/*Log.i("Demo", ""+pos);
Log.i("TAG", ""+i);
Log.i("TAG1", ""+j);
Log.i("TAG2", ""+tid);
Log.i("TAG3", ""+imid);*/
ll2.addView(cb);
ll2.addView(tv);
ll1.addView(ll2);
ll1.addView(img);
ll1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "ID of TextView is:"+ String.valueOf(tv.getId())+" \t ID of Imageview is:"+ String.valueOf(img.getId()), Toast.LENGTH_SHORT).show();
}
});
l_id++;
return ll1;
}
}