我想让我的xml布局更加模块化,因为这将是非常错综复杂的!
我想要一些片段在他们自己的xml文件中.我将如何在主XML文件中正确引用它们.
例如
可以说我有一个
<relative layout>
<linear layout>
<relative layout>
<frame layout>
<relative layout>
<linear layout>
Run Code Online (Sandbox Code Playgroud)
但是它<frame layout>有一个非常复杂的子节点,其中包含按钮和包含列表视图的滚动视图.
我想用自己的XML开发框架布局,然后仅在我的主文档中引用该xml文档
那种语法会是什么样的?它是否仅与<frame layout>我的主XML 中分配的ID相关?
我使用类似的库 github.com/bk138/LibSlideMenu
并且它的工作非常出色HTC device(ICS),并Nexus 7(ICS)和其他Gingerbread设备.
但有些设备Motorola atrix和其他HTC设备一样.
所以我检查了代码.
View view = act.findViewById(android.R.id.content);
Utils.Log("<SlideMenu> : VIEW : "+view);
ViewParent viewParent = view.getParent();
Utils.Log("<SlideMenu> : VIEW : "+viewParent);
LinearLayout linearLayout = (LinearLayout) viewParent;
Utils.Log("<SlideMenu> : VIEW : "+linearLayout);
content = linearLayout;
Run Code Online (Sandbox Code Playgroud)
在这里,首先FrameLayout在所有设备上返回.
但第二件事LinearLayout在ICS设备和其他HTC 2.3设备上返回,有些设备返回DecorView.
我引用这篇文章:DecorView Child FrameLayout
他们说这是我使用的问题NoTitleBar,所以我显示标题栏但它不起作用.
此外,即使我添加了NoTitleBar属性,一些设备也能很好地工作.
由于设备有不同的结果,这真的令人沮丧.有谁知道吗?
请帮助:D提前致谢.
下面是我设计我的xml的方法.现在,我正在尝试在下面显示的白框内插入textview.但是受到FrameLayout的限制(至少我认为是这样)我需要硬编码值以使文本视图适合中间或白盒内的某些位置.我不能为此目的使用相对或其他布局,因为我已经通过我的试验理解,因为整体是单个图像.
这是我的布局,
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:visibility="visible" android:layout_marginTop="60dip"
android:layout_gravity="center" android:id="@+id/xxx">
<ImageView android:id="@+id/calloutquizImage"
android:background="@drawable/callout" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:scaleType="fitCenter" />
<ImageView android:id="@+id/triviaImage"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignTop="@+id/calloutquizImage" android:layout_gravity="left"
android:src="@drawable/trivia" android:background="@drawable/trivia"
android:layout_marginTop="50dip" android:layout_marginLeft="85dip"></ImageView>
<TextView android:text="TextView" android:id="@+id/triviAnswerText"
android:layout_marginTop="125dip" android:layout_marginLeft="85dip"
android:layout_gravity="left" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textColor="#000000"
android:typeface="sans"></TextView>
<ImageButton android:id="@+id/triviaanswercloseButton"
android:src="@drawable/closebtn" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:background="@drawable/closebtn"
android:layout_marginRight="8dip" android:layout_marginTop="43dip"
android:layout_gravity="right" android:onClick="triviaanswerClose"></ImageButton>
<ImageView android:id="@+id/buttontoclose"
android:layout_gravity="left"
android:visibility="visible" android:onClick="triviaanswerClose"
android:layout_marginTop="50dip" android:layout_marginLeft="75dip"
android:layout_width="230dip" android:layout_height="170dip"></ImageView>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
因此,文本视图在各种手机中看起来处于不同的位置.
任何猜测可以为此做些什么呢?
以下是我的形象:

<TabHost
android:id="@+id/tabHost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
// --------------------------- Here I got warning -------------------------
<LinearLayout
android:id="@+id/chat_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:visibility="visible" >
// --------------------------------------------------------------------------
<ListView
android:id="@+id/listView"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/white" >
</ListView>
<LinearLayout
android:id="@+id/text_entry"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="bottom"
android:orientation="horizontal" >
<EditText
android:id="@+id/txt_inputText"
android:layout_width="125dp"
android:layout_height="wrap_content"
android:layout_weight="0.8"
android:hint="@string/enter_text"
android:inputType="text" />
<Button
android:id="@+id/btn_Send"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_weight="0.2"
android:text="@string/send" />
</LinearLayout>
</LinearLayout>
</FrameLayout>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0" >
</TabWidget>
</LinearLayout>
</TabHost>
Run Code Online (Sandbox Code Playgroud)
如何解决此警告?我找不到任何解决方案。任何帮助将不胜感激。
我有一个FrameLayout,它将包含一组ImageViews.我正在使用FrameLayout,因为我实际上希望它们重叠.但是,当我向Layout添加项目时,我不希望它们只是堆叠.我实际上需要订购它们.
图像从存储中提取,我将其正确的顺序存储在我的数据库中,因此:
Image1 - layerNumber: 3
Image2 - layerNumber: 12
Image3 - layerNumber: 1
Image4 - layerNumber: 34
Image5 - layerNumber: 6
Image6 - layerNumber: 30
Run Code Online (Sandbox Code Playgroud)
当我将它们放在FrameLayout中时,我需要将它们放在layerNumber顺序的Layout中.此外,我将在使用该应用时一次添加一个或多个.我可以选择添加"Image50 - layerNumber:10"的内容.
我希望做的是使用像ImageView.setChildOrder(x)之类的东西.有没有办法做到这一点?
-----编辑-----每@fifarunnerr我做了这样的事情:
productLayers.addView(productIV, Integer.parseInt(productItem.get(1)));
Run Code Online (Sandbox Code Playgroud)
productItem.get(1)只是layerNumber.对于这个例子,它位于第23层.
我收到错误: java.lang.IndexOutOfBoundsException: index=23 count=3
我理解错误:我正在尝试将视图放置在第23个点有3个"点"的布局中.正如您在前面的数字中所看到的,layerNumber并不总是处于1..2..3..4 ...模式中.
我有一个我想放在ScrollView中的GLSurfaceView.我通过在添加到ScrollView的LinearLayout中添加FrameLayout来实现这一点.
除了我在滚动时在GLSurfaceView上方获得黑色边框时,Everyhing效果很好.当屏幕静止时,每次都很好看.任何人都有任何想法.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="900dp"
android:orientation="horizontal"
android:layout_weight="1"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginTop="35dp"
android:visibility="visible"
android:weightSum="1"
android:overScrollMode="never">
<FrameLayout
android:id="@+id/ecg_graph"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Run Code Online (Sandbox Code Playgroud)

android opengl-es scrollview glsurfaceview android-framelayout
我遇到了一个问题,我不确定解决它的最佳方法。我需要在滚动视图中包含所有小部件。
下面是布局,我使用了框架布局,因为我需要重叠一堆图像。然而,整个框架布局不能在滚动视图内。但我需要滚动整个面板。用黄色箭头标记的部分显示了框架布局。
我看了这个帖子,但这不是我想要的。
这是xml,如果有人可以提供线索,我将不胜感激。谢谢!
<!-- unfortunately I cannot put this inside the scrollview :( -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image_background"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="@drawable/follow_add" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="100dp"
android:gravity="center|bottom"
android:orientation="horizontal">
<ImageView
android:id="@+id/image_icon"
android:layout_width="120dp"
android:layout_height="120dp"
android:background="@drawable/feed_active" />
</LinearLayout>
<ImageView
android:id="@+id/dismiss"
android:layout_gravity="left"
android:layout_margin="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/close_messages_modal" />
<ImageView
android:id="@+id/follow"
android:layout_gravity="right"
android:layout_margin="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/follow_add" />
</FrameLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:text="Layout above needs to scroll"
android:textColor="@color/half_dark_text_color"
android:textSize="28sp"
android:textStyle="bold" /> …Run Code Online (Sandbox Code Playgroud) 在我的布局中,我有一个FrameLayout我打算根据用户输入显示不同的布局.我想FloatingActionButton在所有这些布局中显示一个.
为了不重复FloatingActionButton所有这些,我想把它附加到FrameLayout.问题是按钮未在fragment布局顶部正确显示.例如,fragment显示的初始GridView值为a ,按钮位于其后面.
activity_main.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="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="xeniasis.mymarket.MainActivity">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:orientation="horizontal"
android:weightSum="4">
<LinearLayout
android:id="@+id/categories_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:paddingRight="20dp">
<ExpandableListView
android:id="@+id/categories_listView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<FrameLayout
android:id="@+id/mainPane"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3">
<android.support.design.widget.FloatingActionButton
android:id="@+id/settings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|start"
android:layout_margin="8dp"
android:clickable="true"
android:elevation="5dp"
android:src="@android:drawable/ic_menu_search" />
</FrameLayout>
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
并以fragment编程方式显示布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="xeniasis.mymarket.MainActivity">
<android.support.v4.widget.SwipeRefreshLayout …Run Code Online (Sandbox Code Playgroud) android android-layout android-fragments floating-action-button android-framelayout
几乎每篇关于分层小部件主题的文章都指向 FrameLayouts,它应该根据 XML 中的出现顺序进行堆叠。为了测试,我在xml中放了一个按钮和一个TextView,希望能看到TextView与按钮重叠。按钮是放在 textview 之前还是之后都没有关系,按钮总是在顶部。谁能看到我做错了什么?
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.jdot.testloadingfragments.MainActivity">
<Button
android:id="@+id/btn_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text=" "
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="----------------------------------------------------------"/>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud) 还有其他相关问题,但它们没有解决我的情况(它们的错误代码与某种回收和/或客户端代码的错误转换调用有关).
我的情况更复杂.
我有一些代码,用户可以在其中提取照片库.
问题是,它在我拥有的7部手机上工作得很好,所有手机都运行API 19+.
但是我有运行API 17的Google Nexus 4.3.我得到的崩溃日志中没有我的代码,只有库代码.如果你可以建议我如何能够编写一个解决方案,我会全力以赴:
FATAL EXCEPTION: main
java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
at android.widget.GridView.onMeasure(GridView.java:1042)
at android.view.View.measure(View.java:15848)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:477)
at android.view.View.measure(View.java:15848)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:477)
at android.view.View.measure(View.java:15848)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:15848)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:15848)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189)
at android.view.View.measure(View.java:15848)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
at android.view.Choreographer.doCallbacks(Choreographer.java:562)
at android.view.Choreographer.doFrame(Choreographer.java:532)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
at android.os.Handler.handleCallback(Handler.java:730)
at …Run Code Online (Sandbox Code Playgroud) java android classcastexception android-runtime android-framelayout