我正在尝试获得一行类似的文本
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设置为0dip和layout_weight将1意味着它们将占用每个可用空间的50%.
设置singleLineto true和ellipsizeto true意味着它们看起来像foofoo ...如果文本大于容器.
因此,我的结果(如果文本更长)应该是
foofoo .. - barbar ..
这是什么!这样可行.
现在我正在尝试修复的情况是,如果第一个TextView(id:text_1)的文本小于给定的50%layout_width="0dip",layout_weight="1"我想要它wrap_content …
我只想在屏幕上显示两个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
这是我的第一篇文章.我正在学习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

我无法控制高度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
我做了一个简化的实验来确定我遇到这个问题的地方.这是一个很长的问题,前面有很多代码.现在我保留了一个简单的小代码:
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
我正在尝试在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) 我试图将我的布局划分为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) 在 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 有什么问题?
我有这样的布局-
<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有什么办法吗?
感谢您的帮助。
我有一个Tabbed Activity有三个ListView片段,但ListView看起来从buttom切割.你永远不会看到最后一个元素.
我尝试了一切,但我无法解决它.
这是选项卡式活动:
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