标签: android-linearlayout

如何设置布局的最大宽度

经过大量的谷歌搜索后,我无法找到解决这个问题的方法.我有这个布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/adlayout"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:orientation="vertical">
<TableLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:stretchColumns="1"
   android:layout_weight="1"
  >

  <TableRow android:id="@+id/tableRow1" android:layout_width="fill_parent"   android:layout_height="wrap_content">
       <TextView android:padding="6dip" android:text="@string/barcode_format"  android:id="@+id/textView1" android:layout_width="wrap_content"   android:layout_height="wrap_content"></TextView>
       <EditText android:padding="6dip" android:layout_width="fill_parent" android:id="@+id/edit_barcode_format" android:layout_height="wrap_content"></EditText>
  </TableRow>
  <TableRow android:id="@+id/tableRow1" android:layout_width="fill_parent" android:layout_height="wrap_content">
      <TextView android:padding="6dip" android:text="@string/barcode_type" android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
      <EditText android:padding="6dip" android:layout_width="fill_parent" android:id="@+id/edit_barcode_type" android:layout_height="wrap_content"></EditText>
  </TableRow>        
 </TableLayout>


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

表格布局定义了一个表格.在手机上看起来不错,但在平板电脑上,edittext视图看起来太大了.我想为布局设置最大宽度,并将窗体绘制为居中.

android android-layout android-linearlayout

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

TextView Ellipsize(...)不起作用

TextView当文本比文本长时,我希望有一个单行显示最后3个点TextView.我不知道为什么 - 但我不懂.

我已经解决了类似StackOverflow的问题,但我最终没有解决方案.也许某人有一些有用的提示.

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

    <TextView 
        android:textStyle="bold" 
        android:text="Full Name" 
        android:layout_height="wrap_content" 
        android:textSize="16sp"
        android:layout_width="wrap_content" 
        android:id="@+id/lName"
        android:layout_gravity="center_vertical" 
        android:maxLines="1"
        android:ellipsize="end"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

LinearLayout上述嵌套到2以外LinearLayouts.也许这一点很重要.我已经尝试了" singleLine" 这个属性,但是有些人说这个已被弃用,无论如何它都不起作用.

android textview android-layout android-linearlayout

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

LinearLayout,RelativeLayout等边距不能按预期工作

组布局中的边距似乎不起作用.

例如,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_margin="40dip"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="I'm a button" />

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

应显示一个四边有40p边距的按钮.但是,它在右侧和底部有80p的边距.

难道我做错了什么?这是一个错误吗?

解决方法是使用重力,但这只适用于均匀的边距.

顺便说一句,这里有一个类似的问题,但尚未得到解答.

android margin android-linearlayout

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

Android:如何测量ListView的总高度

我需要测量ListView的总高度,但似乎我总是得到错误的值.我正在使用此代码:

public static void setListViewHeightBasedOnChildren(ListView listView) {
    ListAdapter listAdapter = listView.getAdapter();
    if (listAdapter == null) {
        return;
    }

    int totalHeight = 0;
    int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(),
            MeasureSpec.AT_MOST);
    Log.w("DESIRED WIDTH", String.valueOf(listAdapter.getCount()));
    for (int i = 0; i < listAdapter.getCount(); i++) {
        View listItem = listAdapter.getView(i, null, listView);
        listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
        totalHeight += listItem.getMeasuredHeight();
        Log.w("HEIGHT"+i, String.valueOf(totalHeight));
    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight
            + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
    listView.setLayoutParams(params);
    listView.requestLayout();
}
Run Code Online (Sandbox Code Playgroud)

问题是我收到的身高比我应该收到的高.每个列表项的测量方式都不同,所有项都具有相同的高度,所以绝对不应该这样做.每个元素的高度至少是它的实际高度的两倍.

先感谢您.

EDIT1:

我有两个ListView,它们都有6-7 EditText字段的项目.如果用户想要在EditText中写入/删除值,我会显示/隐藏ListView.一切都很好,除非我想显示列表,它需要大量的空间,因为方法计算ListView需要大量的空间.因为我在ListView下面有很多空的空间.就像需要三倍空的空间.

height android listview android-listview android-linearlayout

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

LayoutParams使用什么度量单位?

p我正在使用线性布局,并希望设置视图的最大高度.在"正常"情况下,我希望视图使用"wrap_content".然而,偶尔情况可能会将布局推向不合需要的尺寸.发生这种情况时,我想将高度限制在最大300dp.

当布局中的列表超过4个列表项时,我使用以下设置了视图的大小:

LinearLayout listLayout = (LinearLayout) dialog.findViewById(R.id.listLayout);
if(list.size() > 4){
    LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 300);                           
    listLayout.setLayoutParams(params);
}
Run Code Online (Sandbox Code Playgroud)

查看文档使我不了解所应用的度量单位.在这种情况下(dp,sp,px,...),有哪些计量单位?

运行测试,甚至将值设置为100都会使列表超出所需的高度.

请指教

android android-linearlayout layoutparams

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

Android ListView默认分隔符样式/属性

我有一个LinearLayout视图,我试图添加一个分隔符,使其看起来与默认的ListView控件完全相同.我想在默认的Android(Nexus S 2.3.3)联系人应用程序中复制编辑联系人,我相信LinearLayout最适合性能.

我正在使用代码来复制分隔符,如下所示:

    <View
    android:id="@+id/Separator"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/dividerHeight"
    android:background="?android:attr/divider"/>
Run Code Online (Sandbox Code Playgroud)

如何访问默认分频器颜色或drawable以及分频器高度?我希望这与我设置的ListViews相匹配,所以我认为使用Android系统属性是最好的.上面的代码崩溃,如下所示,所以我假设我无法访问这些属性或正在解决这个问题.

03-13 22:59:38.851: ERROR/AndroidRuntime(3575): Caused by: java.lang.RuntimeException: Binary XML file line #26: You must supply a layout_height attribute.
Run Code Online (Sandbox Code Playgroud)

android listview divider android-linearlayout

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

自定义方形LinearLayout.怎么样?

我为方形布局创建了自己的类:

public class SquareLayout extends LinearLayout{

    public SquareLayout(Context context) {
        super(context);
    }

    public SquareLayout(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public SquareLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }


    @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int width = MeasureSpec.getSize(widthMeasureSpec);
        int height = MeasureSpec.getSize(heightMeasureSpec);
        int size = width > height ? height : width;
        setMeasuredDimension(size, size);
    }
Run Code Online (Sandbox Code Playgroud)

然后,在我的xml中:

...
        <com.myApp.SquareLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal"
            android:orientation="horizontal" >

            <ImageView
                android:id="@+id/cellImageView"
                android:adjustViewBounds="true"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="2dp"
                android:padding="2dp"
                android:scaleType="centerCrop"
                android:src="@drawable/image" /> …
Run Code Online (Sandbox Code Playgroud)

xml android android-linearlayout

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

如何在android中使linearLayout部分透明?

我有一个RelativeLayout包含2 LinearLayouts其中一个部分覆盖另一个.我想让LinearLayout顶部的一部分透明,所以我也可以看到第二个LinearLayout 知道我有2个图像作为2的背景LinearLayouts.

android android-linearlayout

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

layout_gravity无法在水平线性布局中工作

我一直试图layout_gravity在横向使用linear layout.但它似乎没有用.我希望使用relative layout或任何其他布局.我想知道为什么它不与工作linear layout.我刚才使用layout_gravityvertical线性布局,它在我的预期的方式工作过.

<LinearLayout
    android:id="@+id/shata"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >
    <TextView
        android:id="@+id/title_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textColor="@color/black"
        android:text="shata1"
        android:textAppearance="?android:attr/textAppearanceMedium"
        />
    <TextView
        android:id="@+id/map_imageview"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="shata2"/>    
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,线性布局有一个orientation=horizontalwidth=match_parent(它只是在根布局内).但是,LinearLayout尽管我已经分别给出了它们layout_gravity=center,但两个TextView都显示在左侧layout_gravity=right.

android android-linearlayout

21
推荐指数
2
解决办法
2万
查看次数

在LinearLayout上仅添加顶部和底部边框

我想在我的上面只添加一个底部和一个顶部边框Linearlayout.我试过这样做:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:bottom="1dp"
    android:top="1dp">
    <shape android:shape="rectangle">
        <solid android:color="#FFFFFF" />
        <stroke
            android:width="1dp"
            android:color="#000" />
    </shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

但它在形状周围添加了边框..

请问你能帮帮我吗 ?

android android-linearlayout android-shape

20
推荐指数
6
解决办法
6万
查看次数