私のアプリケーションのグリッドビューは、3行と3列です。デバイスの画面サイズに関係なく、画面いっぱいに表示させたい。
私は、ウィンドウサイズを取得し、それに応じてlayoutparamsを設定しようとしました。しかし、これはlinearlayoutのweightsumで動作するように、完璧なアライメントを与えるものではありません。
そこで、weightsumをgridviewに使用することができるのか、または使用することができる他のアンドロイドのプロパティがあるのか。 お時間とご回答をありがとうございました。
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/text1view"
android:background="@drawable/home_bg"
android:gravity="center"
android:horizontalSpacing="10dip"
android:numColumns="3"
android:stretchMode="columnWidth" />
各グリッドアイテムは
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/GridItem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical" >
<ImageView
android:id="@+id/grid_item_image"
android:layout_width="wrap_content"
android:layout_height="75dip"
android:layout_margin="0dip"
android:padding="0dip" >
</ImageView>
<TextView
android:id="@+id/grid_item_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_below="@+id/grid_item_image"
android:gravity="center_horizontal"
android:padding="0dip"
android:textColor="#000000"
android:textSize="10sp" >
</TextView>
のコードは、アダプタの:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.griditems, null);
holder = new ViewHolder();
holder.text1 = (TextView) convertView
.findViewById(R.id.grid_item_text);
holder.image = (ImageView) convertView
.findViewById(R.id.grid_item_image);
// if it's not recycled, initialize some attributes
holder.image.setImageResource(gridItemIds[position]);
holder.text1.setText(gridTitles[position]);
int h = mContext.getResources().getDisplayMetrics().densityDpi;
// holder.image.setLayoutParams(new LayoutParams(h-50,h-50));
convertView.setLayoutParams(new GridView.LayoutParams(h - 45,
h - 39));
// holder.image.setScaleType(ImageView.ScaleType.CENTER_CROP);
// holder.image.setScaleType(ImageView.ScaleType.FIT_XY);
// holder.image.setPadding(20, 20, 20, 20);
// convertView.setLayoutParams(new GridView.LayoutParams(Utils
// .getLayoutParameter(), Utils.getLayoutParameter()+50));
holder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new ModuleManager().startModuleACtivity(position, mContext);
}
});
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
return convertView;
}
static class ViewHolder {
TextView text1;
ImageView image;
}
行をご覧ください。
convertView.setLayoutParams(new GridView.LayoutParams(h-45, h-39));
この値は、異なるサイズのエミュレータで試行錯誤してたどり着いたものです。 しかし、私はこれが正しい高さと幅の定義だとは思っていません。
あなたの質問を理解する限り、あなたはコードを投稿していないので、あなたがやろうとしていることは、フルスクリーンでグリッドビューを表示することです。
まず、グリッドビューを配置するために、何らかのレイアウトを使用している必要があります。次のようにしてください。
レイアウト**の高さと幅は、親を埋めるために作る。
android:layout_width="fill_parent"
android:layout_height="fill_parent"
で、グリッドビューの高さと幅もfill_parentに設定します。
まあ、これは、あなたがこの方法で動作している可能性があることを想定したソリューションに過ぎません。いくつかのコードを置くことは、はるかに優れています。これでうまくいくといいのですが。
**更新:***です。 さて、問題はここにあるのかもしれません。
convertView.setLayoutParams(new GridView.LayoutParams(h-45, h-39));
に変更します。
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);
convertView.setLayoutParams(new GridView.LayoutParams(params));
これでうまくいくことを願っています。
preetha: まず、この例を見てください。私はこれを使いましたが、デバイスの高さや幅に関係なく、私のレイアウトは影響を受けませんでした......。
xmlで以下のように設定します。
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="90dp"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center"
は、これが役立つことを願っています...