标签: android-xml

与 ConstraintLayout 等效的 Layout_anchor

我将如何让我的晶圆厂ConstraintLayout像我一样跨越两个布局CoordinatorLayout

XML:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
                                             android:background="#eeeeee"
                                             android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        android:id="@+id/myToolbar"
        android:layout_width="384dp"
        android:layout_height="56dp"
        android:background="@color/colorPrimary"
        android:elevation="0dp"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="0dp"/>

    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/activity_horizontal_margin"
        app:layout_anchor="@+id/tvTest"
        app:layout_anchorGravity="end|bottom|right"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="0dp"/>

    <CustomViews.FontText
        android:id="@+id/tvTest"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="50dp"
        android:text="TestText"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/myToolbar"/>
Run Code Online (Sandbox Code Playgroud)

android android-xml

4
推荐指数
1
解决办法
2792
查看次数

如何在圆内画圆形笔画?

我正在尝试实现这种效果,但无法在圆圈内制作白色圆形笔画。在我的实现中,白色笔画出现在圆圈之外

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="oval">
            <corners android:radius="10dip" />

            <stroke
                android:width="5dip"
                android:color="#ffffff" />
            <solid android:color="#f50000" />
        </shape>

    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)

预期输出:-

在此输入图像描述

android android-xml android-drawable

4
推荐指数
1
解决办法
2390
查看次数

AndroidX 工具栏位置错误

我正在AndroidX为我的 Android 项目使用依赖项。

我有一个Toolbar在我的活动中(这个活动是为了通过支付一些钱来支持开发人员)包裹在这样的线性布局中:

<LinearLayout
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"
android:orientation="vertical"
android:background="@drawable/gradient"
tools:context=".Support">

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar_support"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@null"
    app:popupTheme="@style/AppTheme.PopupOverlay" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

使用的其他 XML 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
android:orientation="vertical"
android:background="@drawable/gradient"
tools:context=".Support">

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar_support"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@null"
    app:popupTheme="@style/AppTheme.PopupOverlay" />

<TextView
    android:layout_marginTop="150dp"
    android:layout_marginStart="10dp"
    android:layout_marginEnd="10dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fontFamily="@font/google_sans"
    android:textSize="17dp"
    android:textColor="#ffffff"
    android:text="@string/support_para"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textColor="#ffffff"
        android:textSize="20dp"
        android:text="$"/>

    <EditText
        android:id="@+id/amount"
        android:layout_width="270dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:hint="@string/pay_amount"
        android:textColorHint="#ffffff"
        android:textSize="20dp"
        android:layout_marginStart="10dp"
        android:layout_gravity="end"
        android:maxLines="1" …
Run Code Online (Sandbox Code Playgroud)

android-linearlayout android-xml androidx

4
推荐指数
1
解决办法
1万
查看次数

Android - 在同一基线上对齐不同的字体大小

我有 2 个相邻的TextViews,每个都有一个不同的字符串,具有不同的字体大小。我希望文本在每个TextView. 我怎样才能做到这一点?

这是我的布局:

   <LinearLayout
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:background="@color/colorAccentLight"
            android:textSize="18sp"
            style="@style/Base.TextAppearance.AppCompat.Medium"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="bottom"
            android:textAlignment="gravity"
            android:text="30"
        />
        <TextView
            android:background="@color/colorAccent"
            android:text="hello"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="bottom"
            android:textAlignment="gravity"
        />

    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这是当前的行为,请注意 2 TextViews如何具有不同的基线(“hello”低于 30),因为每个的字体TextView大小不同。

在此处输入图片说明

android textview android-layout android-xml

4
推荐指数
2
解决办法
563
查看次数

AndroidX 偏好屏幕偏离中心

我的应用程序中有一个首选项屏幕,它偏离了中心,标题文本或数据不是从下图所示的左侧开始。我正在初始化设置片段。我没有应用任何视觉变化或添加任何特殊属性。

父活动中没有填充或边距。我还有一个回收器视图,它在应用程序中显示得非常好,但它偏离了中心

这是我的首选项.xml 文件

<androidx.preference.PreferenceScreen
xmlns:app="http://schemas.android.com/apk/res-auto">

    <PreferenceCategory
        app:title="General">
        <Preference
            app:key="feedback"
            app:title="Send Feedback"
            app:summary="Report technical issues or suggest new features"/>
        <Preference
            app:key="about"
            app:title="About Us"/>
    </PreferenceCategory>


    <PreferenceCategory
        app:title="Customize">

        <SwitchPreferenceCompat
            app:key="@string/key_darkTheme"
            app:title="Enable Dark Theme"
            app:summary="Enable dark theme throughout app (Restarts App Automatically)"
            app:defaultValue="false"/>

        <ListPreference
            app:key="@string/key_font"
            app:title="Set Font Size"
            app:entries="@array/settings_list_preference_font"
            app:entryValues="@array/settings_list_preference_values"
            app:defaultValue="2"
            app:summary="Set font size according to your liking"/>


    </PreferenceCategory>

</androidx.preference.PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

偏好屏幕偏离中心

android android-layout android-xml android-support-library androidx

4
推荐指数
1
解决办法
991
查看次数

如何使用 tools:context 关联 Fragment 文件?

最近我遇到了tools:context在我的布局文件中使用活动的用例。我了解到我可以使用它来将 Activity 类文件关联到我的布局文件。

但是我如何使用它来将 Fragment 类文件与任何布局相关联呢?

Bacuase 正如我所尝试的那样,它仅在自动完成建议中显示活动列表。

android android-layout android-xml

4
推荐指数
2
解决办法
2083
查看次数

Android 中的 paddingLeft 和 paddingStart 有什么区别?

我试图LinearLayout在 Android 的 XML 布局中设置 a 的填充。但它给了我 2 个选择 -paddingLeftpaddingStart.

有什么区别,使用更正确/更好的属性之一是什么?

我想要最好的答案,因为这需要最优质的代码。

android android-layout right-to-left android-xml android-view

4
推荐指数
1
解决办法
373
查看次数

如何将视图与开始约束一起对齐到约束布局的末尾

我有一个约束布局,其中一个文本视图位于左侧,另一个文本视图位于右侧。我希望正确的文本视图与末尾对齐。右侧文本视图也应该能够占用左侧的可用空间。如果空间不够,它应该在末端呈椭圆形。

我已经尝试使用以下 xml 代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:padding="@dimen/dimen_16dp">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:text="Title"
        android:textStyle="bold"
        android:layout_marginEnd="@dimen/dimen_24dp"/>

    <TextView
        android:id="@+id/subtitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:ellipsize="end"
        android:maxLines="1"
        android:text="Subtitle"/>

</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

这对于右侧文本视图中的小文本非常有效。但是,如果右侧文本视图中的文本很大,它会与左侧文本视图重叠。我尝试添加app:layout_constraintStart_toEndOf="@id/title"到正确的文本视图,但这会导致两个问题:

  • 如果文本很小,右侧文本视图中的文本将在可用空间中居中,但我希望它右对齐。
  • 如果文本很大,则无法正确省略

如何在不将父布局更改为线性布局的情况下实现这一点?

android textview android-xml android-constraintlayout

4
推荐指数
1
解决办法
5761
查看次数

如何使用 ConstraintLayout Flow 对齐元素

我正在使用 ConstraintLayout Flow 想要创建如下所示的布局在此输入图像描述

但无法使用 ConstraintLayout Flow 实现上述目标,我的布局如下所示

在此输入图像描述

下面是我的代码

        <androidx.constraintlayout.helper.widget.Flow
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imgAiport"
        app:constraint_referenced_ids="tvDateLbl,tvTimeLbl,tvAirlineLbl,tvDate,tvTime,imgAirlineLogo"
        app:flow_wrapMode="aligned"
        android:layout_margin="15dp"
        app:flow_maxElementsWrap="3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
Run Code Online (Sandbox Code Playgroud)

如何使用 ConstraintLayout Flow 正确对齐元素

android android-layout android-xml android-constraintlayout androidx

4
推荐指数
1
解决办法
1935
查看次数

Android Studio 4.2 布局渲染错误

布局预览最近停止工作,我无法修复它。当问题出现时我最近改变的事情是:

有谁知道为什么会发生这种情况和/或如何解决这个问题?谢谢。

这是堆栈跟踪:

java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at android.view.BridgeInflater.lambda$createViewFromCustomInflater$0(BridgeInflater.java:259)
    at android.view.BridgeInflater.createViewFromCustomInflater(BridgeInflater.java:285)
    at android.view.BridgeInflater.onCreateView(BridgeInflater.java:122)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:928)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:948)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1002)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:309)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1121)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1095)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:1124)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1095)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:499)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:325)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:369)
    at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:141)
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:710)
    at com.android.tools.idea.rendering.RenderTask.lambda$inflate$6(RenderTask.java:865)
    at com.android.tools.idea.rendering.RenderExecutor$runAsyncActionWithTimeout$2.run(RenderExecutor.kt:174)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out …
Run Code Online (Sandbox Code Playgroud)

java android-xml android-studio

4
推荐指数
1
解决办法
1030
查看次数