У меня есть gridview и создать пользовательский адаптер для его заполнения, пользователь может установить строки и столбцы моей сетки. В каждой ячейке сетки я установил видео.андроид заполнить весь экран gridview
Поэтому для заполнения оставшейся части экрана мне необходимо установить динамический размер каждого видеовизу в моем пользовательском адаптере. После this Я могу выполнить задачу, я беру размер дисплея и задаю макет для моего представления, делясь на количество строк и столбцов.
Проблема в том, что в главном макета есть панель действий и текстовое представление. Таким образом, размер окон неверен. Мне нужно вычесть размер action-bar и textview. я найти решение для размера ноу действий бара, но когда получить высоту моего TextView всегда 0.
Как предполагает here я должен принять TextView размера после рендеринга, но для визуализации моего GridView мне нужно знать этот размер !!
Есть ли другие способы сделать это? Нужно вручную вычислить размер представления?
это мой макет
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context="it.nexera.visiamobile.ViewLiveMultiActivity"
>
<TextView
android:id="@+id/txt_grid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:textColor="#454545"
android:gravity="left"
android:text="@string/sel_grid" />
<Spinner
android:id="@+id/grid_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/gridview"
android:layout_toRightOf="@+id/txt_grid" />
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchMode="columnWidth"
android:layout_below="@+id/txt_grid"
android:gravity="center"
/>
</RelativeLayout>
и это мой метод GetView для заказа адаптера:
// create a new VideoView for each item referenced by the Adapter
@SuppressLint("NewApi")
public View getView(int position, View convertView, ViewGroup parent) {
VideoView videoView;
if (convertView == null) { // if it's not recycled, initialize some attributes
videoView = new VideoView(mContext);
WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
int width=0;
int height=0;
if (android.os.Build.VERSION.SDK_INT >= 13){
Point size = new Point();
display.getSize(size);
width = size.x;
height = size.y;
}
else{
width = display.getWidth();
height = display.getHeight();
}
// Calculate ActionBar height
TypedValue tv = new TypedValue();
int actionBarHeight=0;
if (mContext.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
{
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,mContext.getResources().getDisplayMetrics());
}
TextView textview = (TextView) ((Activity) mContext).findViewById (it.nexera.visiamobile.R.id.txt_grid);
int textview_height=textview.getHeight();
height=height-actionBarHeight-textview_height;
AbsListView.LayoutParams param = new AbsListView.LayoutParams(
(width/COL_NUMBER),
(height/ROW_NUMBER));
videoView.setLayoutParams(param);
Uri video = Uri.parse(mvideoSrc[position]);
videoView.setVideoURI(video);
videoView.start();
} else {
videoView = (VideoView) convertView;
}
return videoView;
}
'fill_parent'is устарел, используйте вместо него' match_parent'. –
ОК спасибо, но это не решает мою проблему – tulkas85