标签: android-layout-weight

Android布局使用layout_weight,layout_width和maxWidth

我正在尝试获得一行类似的文本

foofoofoo - barbarbar

但我希望椭圆foo和bar如果它不适合一行.即我正试图缩短它们.

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView android:id="@+id/text_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:maxWidth="0dip"
        android:layout_weight="1"
        android:textColor="#ffffff"
        android:singleLine="true"
        android:ellipsize="true"
        android:text="foofoofoofoo" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:text=" - " />
    <TextView
        android:id="@+id/text_2"
        android:layout_width="wrap_content"                         
        android:layout_height="wrap_content"
        android:maxWidth="0dip"
        android:layout_weight="1"
        android:textColor="#ffffff"
        android:singleLine="true"
        android:ellipsize="true"
        android:text="barbarbarbar" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

跟我一起这部分工作.

TextViews layout_width设置为0diplayout_weight1意味着它们将占用每个可用空间的50%.

设置singleLineto trueellipsizeto true意味着它们看起来像foofoo ...如果文本大于容器.

因此,我的结果(如果文本更长)应该是

foofoo .. - barbar ..

这是什么!这样可行.

现在我正在尝试修复的情况是,如果第一个TextView(id:text_1)的文本小于给定的50%layout_width="0dip",layout_weight="1"我想要它wrap_content …

android textview android-layout android-layout-weight

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

Android视图:如果layout_height太小则隐藏

我只想在屏幕上显示两个TextView,一个在另一个之上。

TextView B:高400dp,在底部,TextView A:填充屏幕的其余部分。

但是,如果TextView A的高度小于100dp,则不应显示它(只有TextView A可见,其余只是空白)。

可以仅通过XML来实现吗?

目前,我正在使用这样的东西:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:gravity="center"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@color/blue"
        android:text="Image A"
        android:gravity="center"
        android:textSize="40sp" />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="400dp"
        android:background="@color/green"
        android:text="Image B: 400dp"
        android:gravity="center"        
        android:textSize="40sp" />

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

android android-layout android-linearlayout android-layout-weight

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

如何使用layout_weight获取LinearLayout的高度(以像素为单位)

这是我的第一篇文章.我正在学习java for Android应用程序的代码.我正在使用一个LinearLayout"变量名为:ll"与预定义的layout_weight(我想在将来随时更改)和高度和宽度设置为MATCH_PARENT.我想以像素为单位获得此LinearLayout的高度.我使用java(ll.addView(variableForAnObject);)填充它.我试图使用ll.getLayoutParams().height获得它的高度; 但我得到了-1.因为我相信这是MATCH_PARENT的常量.将高度设置为0dp会使ll不可见,并将高度设置为0.

请告诉我是否有办法达到它的高度.我想我可以通过使用DisplayMetrics获取屏幕高度并进行几乎不可能的计算(至少对我而言)来做到这一点,但这太复杂了.

java android android-layout layoutparams android-layout-weight

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

如何在LinearLayout中水平对齐元素?

在此输入图像描述

我无法控制高度LinearLayout.这些将无法正确对齐,也不会填满宽度.我希望分隔线位于中央,两侧的按钮都在中间.这是我的代码:

<LinearLayout
    android:id="@+id/buttonFieldsLayout"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/loginFieldsLayout" >

    <Button
        android:id="@+id/signUpButton"
        style="@style/AuthButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/sign_up_button_label" />

    <View
        android:id="@+id/buttonDivider"
        android:layout_width="1dp"
        android:layout_height="wrap_content"
        android:background="@drawable/divider" />

    <Button
        android:id="@+id/cancelButton"
        style="@style/AuthButton"
        android:text="@string/cancel_button_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

divider.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<gradient 
    android:startColor="@color/white"
    android:centerColor="@color/blue"
    android:endColor="@color/white" />
</shape>
Run Code Online (Sandbox Code Playgroud)

更新1:

在@Onik的建议之后,View仍然坚持下去

在此输入图像描述

更新2:

我删除了View元素并添加了此代码LinearLayout,它工作了!

android:divider="@drawable/divider"
android:showDividers="middle"
Run Code Online (Sandbox Code Playgroud)

注意: android:divider属性仅在Android3.0(API级别11)或更高级别可用.

实际上这个链接帮助我并显示了放置分隔符的正确方法:如何将(垂直)分隔符添加到水平LinearLayout?

android android-layout android-linearlayout android-layout-weight

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

将layout_weight分配给微调器时,微调器上的SetSelection崩溃

我做了一个简化的实验来确定我遇到这个问题的地方.这是一个很长的问题,前面有很多代码.现在我保留了一个简单的小代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_spinner_test);

    Spinner spin1 = (Spinner) findViewById(R.id.spin1);
    spin1.setAdapter(new ProfileSpinnerAdapter(this, R.array.feet));
    spin1.setSelection(0);  //does not crash
    spin1.setSelection(getResources().getStringArray(R.array.feet).length - 1);  //it crashes
   //it crashes for any value greater than 0 and less than array length.
Run Code Online (Sandbox Code Playgroud)

这是错误:

java.lang.NullPointerException: Attempt to read from field 'int android.view.ViewGroup$LayoutParams.width' on a null object reference
    at android.widget.TextView.checkForRelayout(TextView.java:6830)
    at android.widget.TextView.onRtlPropertiesChanged(TextView.java:8948)
    at android.view.View.resolveRtlPropertiesIfNeeded(View.java:13118)
    at android.view.View.measure(View.java:17557)
    at android.widget.Spinner.setUpChild(Spinner.java:657)
    at android.widget.Spinner.makeView(Spinner.java:610)
    at android.widget.Spinner.getBaseline(Spinner.java:456)
    at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1294)
    at android.widget.LinearLayout.onMeasure(LinearLayout.java:615)
    at android.view.View.measure(View.java:17562)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5536)
    at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
    at android.view.View.measure(View.java:17562)
    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5536) …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-spinner android-layout-weight

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

以编程方式设置视图权重

我正在尝试在LinearLayout中获取视图以填充宽度.我尝试使用LayoutParams设置它,但它给了我一个错误:

我的代码:

EditText et = new EditText(v.getContext());
                    et.setHint("asset ");
                    et.setTextSize(12);
                    et.setLayoutParams(new LayoutParams(
                            LayoutParams.WRAP_CONTENT,
                            LayoutParams.WRAP_CONTENT, 0.25f));
                    et.setPadding(0, 15, 0, 10);
Run Code Online (Sandbox Code Playgroud)

错误 :

EditText et = new EditText(v.getContext());
                    et.setHint("asset ");
                    et.setTextSize(12);
                    et.setLayoutParams(new LayoutParams(
                            LayoutParams.WRAP_CONTENT,
                            LayoutParams.WRAP_CONTENT, 0.25f));
                    et.setPadding(0, 15, 0, 10);
Run Code Online (Sandbox Code Playgroud)

android android-linearlayout android-layout-weight

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

如何将布局分为3个部分?

我试图将我的布局划分为3个相等的行,尝试使用LinearLayout和权重,但它不起作用,它不做任何更改:

<LinearLayout
    android:id="@+id/rightLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignBottom="@+id/picture"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/picture"
    android:layout_toRightOf="@+id/aligner"
    android:orientation="vertical"
    android:weightSum="3" >

    <LinearLayout
        android:id="@+id/lay1"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#00ff00" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/lay2"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1" >

        <TextView
            android:id="@+id/TextView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/lay3"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1" >

        <TextView
            android:id="@+id/TextView02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="TextView" />
    </LinearLayout>

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

android android-linearlayout android-layout-weight

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

相对布局中的无效布局参数:layout_weight

在 Eclipse 编辑器中,我的 android 布局文件出现以下错误:

Invalid layout param in a RelativeLayout: layout_weight
Run Code Online (Sandbox Code Playgroud)

布局 :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <EditText
        android:id="@+id/text_input"    
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:inputType="textMultiLine"
        android:background="@drawable/bg_textinput"
        android:layout_weight="0.7"
        />

    <EditText
        android:id="@+id/text_input1"
        android:layout_width="20dp"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:inputType="textMultiLine"
        android:background="@drawable/bg_textinput"
        android:layout_toRightOf="@id/text_input"
        />

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

我的 layout_weight 有什么问题?

android android-layout-weight

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

Android-如何在布局中存储额外的隐藏信息(按标签)

我有这样的布局-

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <!-- Linearlaout which acts as ListView in this case -->
    <LinearLayout
        android:id="@+id/Main_View_Reference"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        android:contentDescription="This is a container reference for main list items"

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

还有另一个布局,用于像这样放大该布局的“ LinearLayout”部分,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:id="@+id/Level_3_Layout"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/Level_3_Item_Name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/background_light"
        android:text="Itame Name"
        android:textColor="@android:color/black"
        android:textSize="18sp" />

    <TextView
        android:id="@+id/Level_3_Item_Price"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/background_light"
        android:text="Item Price"
        android:textColor="@android:color/black"
        android:textSize="13sp" />

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@android:color/darker_gray" />

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

我想要做的是我想为从第二部分创建的动态膨胀式布局分配标签值。

因此,我想为每个使用Java创建的(膨胀的)布局设置额外的隐藏信息,以存储一些额外的信息,以便下次需要它们(例如HTML的隐藏字段)时可以检索它们。

android有什么办法吗?

感谢您的帮助。

android android-layout android-layout-weight

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

在带有ViewPager的选项卡式活动中,ListView从底部开始显示

我有一个Tabbed Activity有三个ListView片段,但ListView看起来从buttom切割.你永远不会看到最后一个元素.

screenshoot

我尝试了一切,但我无法解决它.

这是选项卡式活动:

public class TabbedActivity extends AppCompatActivity {

    private SectionsPagerAdapter mSectionsPagerAdapter;
    private ViewPager mViewPager;
    private String query_id;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tabbed);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
        mViewPager = (ViewPager) findViewById(R.id.container);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(mViewPager);

        query_id = getIntent().getStringExtra("query_id");
        String title = getIntent().getStringExtra("title");
        setTitle(title);
    }

    public class SectionsPagerAdapter extends FragmentPagerAdapter {

        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public int getCount() {
            return 3;
        }

        @Override
        public Fragment …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments android-layout-weight

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