当前位置: 首页 > 知识库问答 >
问题:

使用VideoView、可扩展ListView和可滚动TextView构建XML布局

齐献
2023-03-14

我在构建一个XML布局时遇到了一个问题:屏幕的一半是videoView,有两个孩子的可扩展列表,视频框下面有一些textView。文本位于列表下方,因此如果我展开列表,列表将填充半屏幕的其余部分,它应该能够滚动到文本视图。

我的想法是将可扩展列表放在滚动视图中,但我无法扩展列表。

我的布局如下:

  • 线性布局
    • 视频视图
    • 滚动视图
      • 线性布局
        • 可扩展列表视图
        • 文本视图

        有没有其他方法来实现我的意图,或者为什么我不能扩展我的列表。

        编辑: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) {
            }
        
        }
        }
        

共有1个答案

上官鸿祯
2023-03-14

当然,我的建议是

>

  • 滚动视图

    • 可扩展列表
      • 文本视图1
      • 文本视图2
      • 等等
      <ExpandableListView
          android:id="@+id/android:list"
          android:layout_width="match_parent"
          android:layout_height="fill_parent"
          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:paddingLeft="10dp"
              android:hint="12345"
              android:textSize="16sp" />
      
      </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" />
       </RelativeLayout>
      </ExpandableListView>
      </ScrollView>
      

  •  类似资料:
    • 本文向大家介绍Android实现可收缩和扩展的TextView,包括了Android实现可收缩和扩展的TextView的使用技巧和注意事项,需要的朋友参考一下 在Android原生的TextView的基础上,可收缩/扩展的TextView:PhilExpandableTextView。 实现原理:核心是控制TextView的max lines。在TextView的初始化阶段但尚未绘制出View的时

    • 我用了这个尺寸的盒子,似乎还是有错误。 这是我的小部件树:SingleChildScrollView- 医生总结(查看所有细节,运行颤动医生-v): 颤动(频道beta,v0.4.4,Mac OS X 10.13.1 17B1003,语言环境en-HK) [✓] Android工具链-为Android设备开发(Android SDK 26.0.2) iOS工具链-为iOS设备开发(Xcode 9.

    • 问题内容: 是否可以使用Java 而非 JavaScript 构建Chrome扩展程序?(我在Eclipse IDE中使用Java SE。) 问题答案: Chrome扩展程序必须运行JavaScript。但是,您可以使用Google Web Toolkit 将Java编译为JavaScript。

    • 趋势 长相 男人 ----西式服装 -----伤员 --鞋类 }

    • 我正在尝试设置一个相对布局,屏幕顶部有一个工具栏,中央有一个listView。这是我的XML: 会不会是与TextView/ListView大小相关的问题?

    • 这是我第一次来到这个网站。我已经在web上搜索了如何将sqlite数据库填充到可扩展的listview,但我失败了。 我遵循这些步骤来了解如何创建可扩展的listview,并修改一些代码使其动态化。 当我试图运行模拟器时,程序崩溃了。 我是android开发的新手,我需要你们专家的帮助…提前道谢。 哦..我很抱歉。这是我的logcat的结果...这只是错误部分。