Articles of android layout

android有可能在一个ScrollView中放置一个约束布局

所以最近,在android studio 2.2中有一个新的约束布局,使得devise变得更容易,但是与RelativeLayout和Linearlayout不同,我不能使用ScrollView来包围ConstraintLayot 。 可能吗? 如果是的话,怎么样? 即 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:layout_editor_absoluteX="0dp" tools:layout_editor_absoluteY="0dp"> <android.support.constraint.ConstraintLayout android:id="@+id/constraintLayout2" android:layout_width="match_parent" android:layout_height="match_parent" tools:layout_editor_absoluteX="0dp" tools:layout_editor_absoluteY="0dp"> <!– have whatever children you want inside –> </android.support.constraint.ConstraintLayout> </ScrollView>

为什么datepicker在我的视图中添加一个日历?

我开始学习如何在Android上开发。 这是非常简单的,但我面临一个问题,我没有发现任何地方提到… 我有一个看法: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="vertical"> <EditText android:id="@+id/editNomProduit" android:layout_width="fill_parent" android:layout_height="wrap_content" android:ems="10" android:hint="@string/ht_nom_produit" /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="horizontal"> <TextView android:id="@+id/labelQuantiteProduitEdit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/labelQuantiteProduitEdit" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/editQuantite" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number" /> <Spinner android:id="@+id/spinnerUnite" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingLeft="16dp" android:paddingRight="16dp" android:orientation="horizontal"> <TextView android:id="@+id/labeDateAchatProduitEdit" android:layout_width="wrap_content" […]

自己定义的Layout,onDraw()方法没有被调用

我定义了这样一个类: public class TestMyFrameLayout extends FrameLayout{ Paint mPaint; public TestMyFrameLayout(Context context, AttributeSet attrs) { super(context, attrs); } public TestMyFrameLayout(Context context) { super(context); mPaint = new Paint(); mPaint.setColor(Color.GREEN); } protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(50f, 50f, 30, mPaint); } } 并称之为: TestMyFrameLayout myFrameLayout = new TestMyFrameLayout(this); LayoutParams myFrameLayoutParams = new LayoutParams(300,300); myFrameLayout.setLayoutParams(myFrameLayoutParams); setContentView(myFrameLayout); 但是实际上TestMyFrameLayout.onDraw(Canvas canvas)函数没有被调用,为什么呢?

渲染期间引发的exception:二进制XML文件行#-1:错误膨胀类<未知>

我试图在布局中包括checkbox,并拖放后,我得到这个错误: 渲染期间引发的exception:二进制XML文件行#-1:错误膨胀class<unknown> 。 xml文件: <?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="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.nidhigupta.shopping2.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:id="@+id/textView" /> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New CheckBox" android:id="@+id/checkBox" android:layout_below="@+id/textView" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> </RelativeLayout> 请提供一步一步的解决scheme。 细节链接说: java.lang.NoSuchMethodError: android.graphics.drawable.VectorDrawable_Delegate.nCreateTreeFromCopy(JJ)J at android.graphics.drawable.VectorDrawable.nCreateTreeFromCopy(VectorDrawable.java) at android.graphics.drawable.VectorDrawable.access$400(VectorDrawable.java:204) at android.graphics.drawable.VectorDrawable$VectorDrawableState.createNativeTreeFromCopy(VectorDrawable.java:837) at android.graphics.drawable.VectorDrawable$VectorDrawableState.<init>(VectorDrawable.java:812) at android.graphics.drawable.VectorDrawable.mutate(VectorDrawable.java:268) at android.graphics.drawable.DrawableContainer$DrawableContainerState.addChild(DrawableContainer.java:817) at android.graphics.drawable.StateListDrawable$StateListState.addStateSet(StateListDrawable.java:329) at android.graphics.drawable.AnimatedStateListDrawable$AnimatedStateListState.addStateSet(AnimatedStateListDrawable.java:602) at […]

在Android中分页文字

我正在为Android编写一个简单的文本/电子书阅读器,所以我使用了TextView来向用户显示HTML格式的文本,所以他们可以通过来回浏览页面中的文本。 但我的问题是,我不能在Android中分页。 我不能(或者我不知道如何)从断行和分页algorithm中得到适当的反馈,在这些algorithm中, TextView用来将文本分解成行和页面。 因此,我无法理解内容在实际显示中的结束位置,以便我从下一页的剩余内容继续。 我想find办法来克服这个问题。 如果我知道屏幕上画的最后一个字是什么,我可以很容易地把足够的字符填满一个屏幕,并且知道实际的绘画完成的地方,我可以继续下一页。 这可能吗? 怎么样? 类似的问题已经在StackOverflow上多次提出,但没有提供令人满意的答案。 这些只是其中的几个: 如何在Android中将长文本分页成页面? 在Android的电子书阅读器分页问题 根据呈现的文本大小分页文本 有一个答案,似乎工作,但速度缓慢。 它添加字符和行,直到页面被填充。 我不认为这是一个很好的方法来做页面打破: 如何在Android中将样式文本分解成页面? 而不是这个问题,恰巧PageTurner电子书阅读器做它大部分是正确的,虽然它在某种程度上是缓慢的。 https://github.com/nightwhistler/pageturner PS:我不仅限于TextView,而且我知道换行和分页algorithm可能相当复杂( 如在TeX中 ),所以我不是在寻找最佳答案,而是一个相当快速的解决scheme,可以被用户。 更新:这似乎是获得正确答案的好开始: 有没有办法检索TextView的可见行数或范围? 答案:完成文字布局后,可以找出可见的文字: ViewTreeObserver vto = txtViewEx.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { ViewTreeObserver obs = txtViewEx.getViewTreeObserver(); obs.removeOnGlobalLayoutListener(this); height = txtViewEx.getHeight(); scrollY = txtViewEx.getScrollY(); Layout layout = txtViewEx.getLayout(); firstVisibleLineNumber = […]

MonoDroid:调用自定义视图的构造函数时出错 – TwoDScrollView

我正在构build一个使用定制的TwoDScrollView在这里find的Android应用程序: http://blog.gorges.us/2010/06/android-two-dimensional-scrollview/ 这个类可以在其他几个网站上find,Stack Overflow的其他人也提出了一些问题。 我在之前使用Java / Eclipse构build的Android应用程序中使用了它,而且我取得了成功。 用我目前的应用程序,我想使用C#和MonoDroid。 我决定用C#重写整个TwoDScrollView类。 重写后,然后在一些布局XML中使用它,当我尝试运行我的代码时,出现以下exception: System.NotSupportedException已被抛出。 无法从本地句柄44f4d310激活types为MyProject.TwoDScrollView的实例。 System.Exception:没有为MyProject.TwoDScrollView ::。ctor(System.IntPtr,Android.Runtime.JniHandleOwnership)find构造函数……更多的文本后面…. 我的布局XML如下所示: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <myproject.TwoDScrollView android:layout_width="fill_parent" android:layout_height="fill_parent"> </myproject.TwoDScrollView> </RelativeLayout> 按照以下链接中关于在MonoDroid中使用布局XML中的自定义视图的说明: http ://docs.xamarin.com/android/advanced_topics/using_custom_views_in_a_layout TwoDScrollView类的构造函数如下所示: public TwoDScrollView(Context context) : base(context) { initTwoDScrollView(); } public TwoDScrollView(Context context, IAttributeSet attrs) : base(context, attrs) { initTwoDScrollView(); } public TwoDScrollView(Context context, […]

无法将@ drawable /转换为drawable

我已经添加了一个图像到我想要在UI中使用的Android项目。 我已经将文件my-image.png添加到可绘制目录(对于使用该项目创build的所有4个可绘制目录),并将该ImageView添加到布局中: <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:layout_alignParentBottom="true" android:layout_alignLeft="@+id/textView" android:layout_marginBottom="63dp" android:src="@drawable/my-image" /> 问题是我得到以下错误: 渲染问题 无法将@ drawable / my-image转换为drawable 这是捕获: 另外,如果我尝试编译该项目,我得到以下错误: Gradle:执行失败的任务':MyProject:processDebugResources'。 为什么我会得到这些错误,我该如何解决? 我错过了什么吗? 我刚开始Android开发。

如何创build等宽的button?

我想在屏幕中间显示三个button,并且三个button都是相同的宽度,尽pipe它们将具有不同长度的文本标签。 只需添加三个不同长度的文本标签button,即可生成不同宽度的button。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="center"> <Button android:id="@+id/button_1" android:layout_height="fill_parent" android:layout_width="wrap_content" android:text="ABCDEF" /> <Button android:id="@+id/button_2" android:layout_height="fill_parent" android:layout_width="wrap_content" android:text="GHI" /> <Button android:id="@+id/button_3" android:layout_height="fill_parent" android:layout_width="wrap_content" android:text="JKLM" /> </LinearLayout> 默认button宽度包装内容: – 将layout_weight设置为1,并在所有button上将layout_width设置为0dip,使其均等拉伸以填充整个屏幕宽度。 对于我想要的,这样的button太大了,特别是在大屏幕上。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:gravity="center"> <Button android:id="@+id/button_1" android:layout_height="fill_parent" android:layout_width="0dip" android:layout_weight="1" android:text="ABCDEF" /> <Button android:id="@+id/button_2" android:layout_height="fill_parent" […]

Android:旋转整个布局

我需要能够在飞行中旋转整个布局(点击一个button)。 我能够旋转布局使用,例如。 layout.setRotation(270.0f) 。 问题是,旋转后,布局的height和width不符合其父母的 。 我曾尝试反转height和width像这样, RelativeLayout layout = (RelativeLayout)findViewById(R.id.rootLayout); LayoutParams layoutParams = layout.getLayoutParams(); int height = layout.getHeight(); int width = layout.getWidth(); layoutParams.height = width; layoutParams.width = height; 它什么都不做。 我正在与sdk 14 。 下面的第一个图像是应用程序,因为它开始。 第二个,旋转后。 我想填补黑色的“空间”。 任何帮助,将不胜感激。 下面的图片只显示布局中的一个button。 但是,实际上,布局要复杂得多。 我试图达到的目的是“伪造”景观。 编辑:更改图像和添加说明。