标签: android-linearlayout

ScrollView 在相对布局中不起作用

我正在尝试创建一个应用程序,它只是一个包含文本、按钮等的简单列表......

但该列表太大,不适合移动屏幕。所以我尝试制作一个ScrollView,但它不起作用。

编辑:滚动在手机上不起作用。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
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.blabla.tddddd.MainActivity" >

<ScrollView
android:id="@+id/scroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/feedback_send"
android:fillViewport="true" >

<RelativeLayout
    android:id="@+id/container"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Aksjasjjs"
    android:id="@+id/textView"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:textStyle="bold|italic" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="KSADKDSK"
    android:id="@+id/textView2"
    android:layout_below="@+id/textView"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginTop="29dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="salSKXAska"
    android:id="@+id/textView3"
    android:layout_below="@+id/textView2"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginTop="29dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="SKakas"
    android:id="@+id/textView4"
    android:layout_marginTop="66dp"
    android:layout_below="@+id/textView3"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="sassa"
    android:id="@+id/textView5"
    android:layout_marginTop="87dp"
    android:layout_below="@+id/textView4"
    android:layout_alignParentLeft="true" …
Run Code Online (Sandbox Code Playgroud)

android scrollview android-linearlayout android-relativelayout

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

LinearLayout 中的 4 行 Buttons 填充屏幕宽度

我有一个垂直LinearLayout和四个水平LinearLayouts. 每个水平布局包含 4 Buttons. 我希望Buttons在每个水平方向LinearLayout均匀地填充屏幕宽度。目前它看起来像这样:

在此处输入图片说明

Button每行的第一行占据所有宽度,Buttons每行的其他 3行不可见。有谁知道我该如何解决这个问题?

<LinearLayout 
    android:id = "@+id/ll_screen_bttns"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="20dp"
    android:orientation="vertical"
    >
<LinearLayout 
    android:id="@+id/ll1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_weight = "1">
        <Button
            android:id="@+id/button0"
            android:layout_width="fill_parent"
            android:layout_height="@dimen/size"
            android:background="@drawable/button"
            android:onClick="ButtonOnClick" 
            android:tag="0"/
        />  
        <Button
            android:id="@+id/button1"
            android:layout_width="fill_parent"
            android:layout_height="@dimen/size"
            android:background="@drawable/button"
            android:onClick="ButtonOnClick" 
            android:tag="0"
            />

        <Button
            android:id="@+id/button2"
            android:layout_width="fill_parent"
            android:layout_height="@dimen/size"
            android:background="@drawable/button"
            android:onClick="ButtonOnClick" 
            android:tag="0"
            />

        <Button
            android:id="@+id/button3"
            android:layout_width="fill_parent"
            android:layout_height="@dimen/size"
            android:background="@drawable/button"
            android:onClick="ButtonOnClick" 
            android:tag="0"
            />
    </LinearLayout>

<LinearLayout 
    android:id="@+id/ll2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_weight = "1">
    <Button
        android:id="@+id/button4"
        android:layout_width="fill_parent" …
Run Code Online (Sandbox Code Playgroud)

android button android-linearlayout

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

如何避免在 onDraw 上创建 Rect 对象

在我的应用程序中,我创建了重写 LinearLayout 的 LinearLayout 类,以便以编程方式设置其周围的边框和按需的其他图形(即填充自定义颜色)。问题是,在 onDraw 的第一行中,我必须获取布局 Rect,如下所示:

@Override
protected void onDraw(Canvas canvas) {
    r = canvas.getClipBounds() ;
Run Code Online (Sandbox Code Playgroud)

问题是我收到警告:

避免在绘制操作期间分配对象:使用 Canvas.getClipBounds(Rect) 而不是 Canvas.getClipBounds() ,后者会分配临时 Rect。

虽然我知道上面的代码浪费了内存资源,但我找不到应用Canvas.getClipBounds(Rect)来执行相同操作的方法。如果有人指出我以更记忆友好的方式执行此操作的方法,我将不胜感激。

先感谢您。

memory android canvas ondraw android-linearlayout

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

LinearLayout addView 只添加一个视图

我试图在 LinearLayout 中添加三个水平对齐的视图,但只显示一个视图;这里的第一个红色circle是下面的代码:

LinearLayout.LayoutParams linearParam = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        view_custom_loading = new LinearLayout(getContext());
        view_custom_loading.setVisibility(View.VISIBLE);
        view_custom_loading.setLayoutParams(linearParam);
        view_custom_loading.setBackgroundColor(getContext().getResources().getColor(R.color.semi_trans));
        view_custom_loading.setPadding(10, 10, 10, 10);
        view_custom_loading.setOrientation(LinearLayout.HORIZONTAL);

        CircleView circle = new CircleView(getContext());
        circle.color = Color.RED;
        CircleView circle1 = new CircleView(getContext());
        circle1.color = Color.WHITE;
        CircleView circle2 = new CircleView(getContext());
        circle2.color = Color.BLUE;
        view_custom_loading.addView(circle);
        view_custom_loading.addView(circle1);
        view_custom_loading.addView(circle2);
        viewList.add(circle);
        viewList.add(circle1);
        viewList.add(circle2);
Run Code Online (Sandbox Code Playgroud)

这是 CircleViewsonDraw方法:

@Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint p = new Paint();
        p.setColor(color);
        p.setAntiAlias(true);
        p.setStyle(Paint.Style.FILL);
        canvas.drawCircle(50, 50, 25, p);
    }
Run Code Online (Sandbox Code Playgroud)

java android android-custom-view android-linearlayout

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

在 LinearLayout 中将 ImageView 对齐到右上角

这就是我要的:

[截屏]

在此处输入图片说明

这是我所做的:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="30dip"
    android:background="@color/color"
    android:orientation="vertical" >


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="1dp"
        android:background="@color/color"
        android:orientation="horizontal">

        <View
            android:id="@+id/divider"
            android:layout_width="5dp"
            android:layout_height="match_parent"
            android:layout_gravity="center_vertical"
            android:background="@color/grey"
            android:gravity="center_vertical" />


    <LinearLayout
        android:id="@+id/llayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/color"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/label"
            style="@style/some_style"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:layout_marginLeft="8dp"
            android:gravity="left" />

        <TextView
            android:id="@+id/label2"
            style="@style/some_style"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:layout_marginLeft="8dp"
            android:gravity="left" />

    </LinearLayout>

    </LinearLayout>

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

我已经完成了,但问题是如何在垂直线性布局的右上角对齐图像(可以在屏幕截图中看到)。

我也尝试过使用相对布局,图像出现在右上角,但它在文本视图中剪切了我的文本。

请建议:

android imageview android-linearlayout

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

如何对线性布局中的元素进行排序?

我有一个应用程序,可以在 LinearLayout (位于 ScrollView 内部)内显示不同的图像。

当用户按下按钮时,我想对布局中的元素重新排序。例如:如果我有 |pic1|pic2|pic3| 显示在布局中,但我想重新排序它们,使它们显示为 |pic2|pic1|pic3|

这是我的“activity_main.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:background="@drawable/map"
    tools:context="dis2.widget.MainActivity">

    <HorizontalScrollView
        android:layout_width="fill_parent"
        android:layout_height="80dp"
        android:id="@+id/contactsScrollView"
        android:fillViewport="false"
        android:visibility="visible"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="26dp">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="visible">

            <ImageView
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:src="@drawable/pic1"
                android:id="@+id/pic1ID"
                android:visibility="gone" />

            <ImageView
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:src="@drawable/pic2"
                android:id="@+id/pic2ID"
                android:visibility="gone" />

            <ImageView
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:src="@drawable/pic3"
                android:id="@+id/pic3ID"
                android:visibility="visible" />

        </LinearLayout>
    </HorizontalScrollView>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Reorder"
        android:id="@+id/reorderB"
        android:layout_marginBottom="114dp"
        android:onClick="reorder"
        android:layout_alignParentBottom="true" />


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

android android-linearlayout

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

在 LinearLayout 中显示 CardView 的两列

我试图从我的数据库中获取 3 组对象,我想以这样的方式显示它们:

但它只是把它们放在一个地方而不是分散开,见这里:

我猜卡片视图彼此重叠并且全部停留在一个地方而不是去可用区域。

我使用 LinearLayout 作为代码:

<?xml version="1.0" encoding="utf-8"?>
   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:weightSum="2"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:weightSum="2">

        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:layout_weight="1"
            android:layout_gravity="left">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_addimage"
                    android:id="@+id/itemImage"
                    android:scaleType="fitCenter"
                    android:padding="2dp"
                    android:adjustViewBounds="true" />'
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Item name"
                    android:paddingLeft="15dp"
                    android:paddingRight="15dp"
                    android:paddingTop="5dp"
                    android:textSize="20dp"
                    android:textStyle="bold"
                    android:id="@+id/itemName"/>
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Price"
                    android:textStyle="normal"
                    android:paddingTop="3dp"
                    android:paddingLeft="15dp"
                    android:paddingRight="15dp"
                    android:paddingBottom="10dp"
                    android:id="@+id/itemPrice"/>
            </LinearLayout>
        </android.support.v7.widget.CardView>
    </LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

xml android-layout android-linearlayout android-cardview android-recyclerview

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

DrawerLayout 必须使用 MeasureSpec.EXACTLY 进行测量。在 android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:994)

这是我的mainlayout文件。

这是主布局文件,我在其中编写与导航抽屉相关的代码,还使用 ​​include 包含工具栏。

    <LinearLayout android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:android="http://schemas.android.com/apk/res/android">
        <android.support.v4.widget.DrawerLayout
            android:id="@+id/navigation_Drawerlayout"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            tools:openDrawer="start">
            <include layout="@layout/navigation_drawerlayout" />

            <android.support.design.widget.NavigationView
                android:id="@+id/navigation_View"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="start"
                android:fitsSystemWindows="true">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">

                    <include layout="@layout/navigation_headerview" />

                    <android.support.v7.widget.RecyclerView
                        android:id="@+id/navigationRecycleView"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
                </LinearLayout>


            </android.support.design.widget.NavigationView>


        </android.support.v4.widget.DrawerLayout>










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

navigation_toolbarlayout.xml 该布局定义了toolbar上面代码中使用的代码

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout
        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.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/ThemeOverlay.AppCompat.ActionBar">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/colorPrimary"
                android:minHeight="?attr/actionBarSize"
                app:titleTextColor="@android:color/white">

                <!-- Screen title -->
                <TextView
                    android:id="@+id/toolbarTitle"
                    style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:text=""
                    android:textColor="@android:color/white"></TextView>
            </android.support.v7.widget.Toolbar>
        </android.support.design.widget.AppBarLayout> …
Run Code Online (Sandbox Code Playgroud)

android android-linearlayout android-drawer

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

具有水平线性布局的 Android 水平滚动视图。怎么才能填满整个宽度?

我正在做一些练习来学习 android 编程。

我希望这个水平布局中的每个按钮都是全宽的。

所以用户可以滚动它。

这是我的 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">

    <HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="140dp">

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="Button1" />

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="0"
                android:text="Button2" />

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="Button3" />

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="Button4" />

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="Button5" />

        </LinearLayout>
    </HorizontalScrollView>

</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

所以按钮 1 和其他所有按钮都必须在画廊中滚动行

java android android-linearlayout

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

Fragment 工具栏上方奇怪的空白区域。如何解决?

我正在编写一个 Android 应用程序,它基于 Fragments,插入根 emty 活动中。对于每个片段,我配置了单独的工具栏。当我打开第一个屏幕片段时,它工作正常。此屏幕的xml、工具栏代码和屏幕截图

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

<android.support.design.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
        <include
                android:id="@+id/toolbar_main"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                layout="@layout/layout_toolbar_main"/>

        <android.support.v7.widget.RecyclerView
                android:id="@+id/listOfClientsWithActions"
                android:layout_height="match_parent"
                android:scrollbars="vertical"
                android:layout_width="match_parent"
                android:clipToPadding="false" android:paddingTop="8dp"/>
    </LinearLayout>

    <android.support.design.widget.FloatingActionButton
            android:id="@+id/fabAddContact"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end|bottom"
            android:src="@drawable/ic_baseline_add_white_24"
            android:layout_margin="16dp" app:fabSize="normal"/>
</android.support.design.widget.CoordinatorLayout>

<android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:itemIconTint="@color/drawer_item"
        app:menu="@menu/drawer_menu"
        app:itemTextAppearance="@style/NavDrawerItem"
        app:headerLayout="@layout/nav_header"/>
</android.support.v4.widget.DrawerLayout>

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    initToolbar(view)
}

private fun initToolbar(view: View) {
    val toolbar = view.findViewById<Toolbar>(R.id.toolbar_main)
    (activity …
Run Code Online (Sandbox Code Playgroud)

android android-linearlayout android-fragments android-scrollview android-actionbar

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