画面の半分の videoView、2 つの子を持つ expandableList、およびビデオ フレームの下にいくつかの textView を含む XML レイアウトを構築する際に問題があります。テキストはリストの下にあるため、リストを展開してリストが残りの半分の画面を埋めると、textView までスクロールできるはずです。
私の考えは、expandableList を scrollView 内に配置することでしたが、リストを展開できませんでした。
次のようにレイアウトを作成しました。
- LinearLayout
- ビデオビュー
- ScrollView
- LinearLayout
- ExpandableListView
- テキストビュー>
- ...
- LinearLayout
私の意図を実現する別の方法はありますか、またはリストを拡張できないのはなぜですか.
編集: XML レイアウト:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical" >
<VideoView
android:id="@+id/video_player_h"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1" >
<ExpandableListView
android:id="@+id/expandableList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:groupIndicator="@drawable/group_indicator" >
<TextView
android:id="@+id/android:empty"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Empty" >
</TextView>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/view_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:gravity="center"
android:paddingLeft="10dp"
android:text="Views: "
android:textSize="16sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/view_text"
android:gravity="center"
android:hint="12345"
android:paddingLeft="10dp"
android:textSize="16sp" />
<RatingBar
style="@style/newRatingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:isIndicator="false"
android:numStars="5"
android:rating="3" />
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/date_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:paddingLeft="10dp"
android:text="Date: "
android:textSize="16sp" />
<TextView
android:id="@+id/date_video"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/date_text"
android:hint="11.11.1111"
android:textSize="16sp" />
<TextView
android:id="@+id/uploader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:hint="Mr. X"
android:paddingRight="10dp"
android:textSize="16sp" />
<TextView
android:id="@+id/user_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/uploader"
android:text="User: "
android:textSize="16sp" />
</RelativeLayout>
</ExpandableListView>
</ScrollView>
</LinearLayout>
クラス:
public class Player extends Activity {
ExpandableListView titleList;
VideoView videoView;
ExpandableListAdapter exp;
private static final String OUTPUT_FILE="/storage/sdcard0/bigbuckbunny.3gp";
public int GetDipsFromPixel(float pixels)
{
float scale = getResources().getDisplayMetrics().density;
return (int) (pixels * scale + 0.5f);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.play_activity);
videoView = (VideoView) findViewById(R.id.video_player_h);
MediaController mc = new MediaController(this);
videoView.setMediaController(mc);
videoView.setVideoPath(OUTPUT_FILE);
if (getResources().getConfiguration().orientation == 1) {
titleList = (ExpandableListView) findViewById(R.id.expandableList);
ArrayList<String> groupList = new ArrayList<String>();
groupList.add("Titel");
ArrayList<ArrayList<String>> childrenList = new ArrayList<ArrayList<String>>();
ArrayList<String> childrenElement = new ArrayList<String>();
childrenElement.add("Beschreibung");
childrenList.add(childrenElement);
ExpandableListAdapter listAdapter = new ExpandableAdapter(this, groupList, childrenList);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
titleList.setIndicatorBounds(width - GetDipsFromPixel(50), width - GetDipsFromPixel(10));
titleList.setAdapter(listAdapter);
titleList.setDividerHeight(1);
titleList.setClickable(false);
}
}
class ExpandableAdapter implements ExpandableListAdapter {
Context context;
ArrayList<String> groups;
ArrayList<ArrayList<String>> children;
public ExpandableAdapter(Context context, ArrayList<String> groups, ArrayList<ArrayList<String>> children) {
this.context = context;
this.groups = groups;
this.children = children;
}
public Object getChild(int groupPosition, int childPosition) {
return children.get(groupPosition).get(childPosition);
}
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
if(convertView==null){
LayoutInflater inflator = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflator.inflate(R.layout.title_child, null);
}
TextView text = (TextView) convertView.findViewById(R.id.child_field);
text.setText(children.get(groupPosition).get(childPosition));
return convertView;
}
public int getChildrenCount(int groupPosition) {
return children.get(groupPosition).size();
}
public Object getGroup(int groupPosition) {
return groups.get(groupPosition);
}
public int getGroupCount() {
return groups.size();
}
public long getGroupId(int groupPosition) {
return groupPosition;
}
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if(convertView==null){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.title_group, null);
}
TextView text = (TextView) convertView.findViewById(R.id.group_field);
text.setText(groups.get(groupPosition));
return convertView;
}
public boolean hasStableIds() {
return true;
}
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
public boolean areAllItemsEnabled() {
return false;
}
public long getCombinedChildId(long groupId, long childId) {
return 0;
}
public long getCombinedGroupId(long groupId) {
return 0;
}
public boolean isEmpty() {
return false;
}
public void onGroupCollapsed(int groupPosition) {
}
public void onGroupExpanded(int groupPosition) {
}
public void registerDataSetObserver(DataSetObserver observer) {
}
public void unregisterDataSetObserver(DataSetObserver observer) {
}
}
}