Java 在Android中居中放置两个视图块
我希望两个标签块在屏幕上水平居中,目前我有以下代码:Java 在Android中居中放置两个视图块,java,android,xml,Java,Android,Xml,我希望两个标签块在屏幕上水平居中,目前我有以下代码: <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal" > <TextView android:id="@+id/Text
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:singleLine="true"
android:text="Lorem ipsum"
android:textColor="#ff0000" />
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="Test 2"
android:textColor="#00ff00" />
</LinearLayout>
当文本较短时,这是正常的(见下图):
但当红色文本较长(或屏幕较窄)时,绿色文本将丢失:
因为绿色文本是一个单词,我希望它有优先权,总是可见的省略红色
如果需要(并保持块居中)
它应该是这样的:
我怎样才能做到这一点
注意:我需要使用两个文本视图,因为它们必须是动画的我认为您不需要使用两个文本视图,只需使用一个文本视图,然后使用SpannableStringBuilder
SpannableStringBuilder builder = new SpannableStringBuilder();
SpannableString redSpannable = new SpannableString("here first string");
redSpannable.setSpan(new ForegroundColorSpan(Color.parseColor("#ff0000")), 0, "here first string".length(), 0);
builder.append(redSpannable);
builder.append(" ");
String white = upperCase.toUpperCase();
SpannableString whiteSpannable = new SpannableString("here second string");
whiteSpannable.setSpan(new ForegroundColorSpan(Color.parseColor("#00ff00")), 0, "here second string".length(), 0);
builder.append(whiteSpannable);
TextView02.setText(builder, BufferType.SPANNABLE);
我认为你不必使用两个文本视图,只需使用一个文本视图,然后使用SpannableStringBuilder
SpannableStringBuilder builder = new SpannableStringBuilder();
SpannableString redSpannable = new SpannableString("here first string");
redSpannable.setSpan(new ForegroundColorSpan(Color.parseColor("#ff0000")), 0, "here first string".length(), 0);
builder.append(redSpannable);
builder.append(" ");
String white = upperCase.toUpperCase();
SpannableString whiteSpannable = new SpannableString("here second string");
whiteSpannable.setSpan(new ForegroundColorSpan(Color.parseColor("#00ff00")), 0, "here second string".length(), 0);
builder.append(whiteSpannable);
TextView02.setText(builder, BufferType.SPANNABLE);
我通过使用重量得到了您期望的结果:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:singleLine="true"
android:text="Lorem ipsumsvasvdfbfgnbgndnnghnghnghngngnbfgbsdfbsdfdsfvsdfvfv"
android:textColor="#ff0000"
android:layout_weight="1"
android:layout_width="0dp" />
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="Test 2"
android:textColor="#00ff00" />
</LinearLayout>
我通过使用权重得到了您期望的结果:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:singleLine="true"
android:text="Lorem ipsumsvasvdfbfgnbgndnnghnghnghngngnbfgbsdfbsdfdsfvsdfvfv"
android:textColor="#ff0000"
android:layout_weight="1"
android:layout_width="0dp" />
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="Test 2"
android:textColor="#00ff00" />
</LinearLayout>
在这里尝试一下:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextView02"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:gravity="right"
android:singleLine="true"
android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit"
android:textColor="#ff0000" />
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:singleLine="true"
android:text="TextView"
android:textColor="#00ff00" />
</LinearLayout>
在这里尝试一下:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextView02"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:gravity="right"
android:singleLine="true"
android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit"
android:textColor="#ff0000" />
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:singleLine="true"
android:text="TextView"
android:textColor="#00ff00" />
</LinearLayout>
您可以使用布局重量atribute 试试这个
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextView02"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:singleLine="true"
android:text="Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum"
android:textColor="#ff0000" />
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="Test 2"
android:textColor="#00ff00" /></LinearLayout>
希望对您有所帮助。您可以使用安眠药 试试这个
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextView02"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:singleLine="true"
android:text="Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum"
android:textColor="#ff0000" />
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="Test 2"
android:textColor="#00ff00" /></LinearLayout>
希望有帮助。动态为TextView2指定最大宽度属性,它应该是: 首先获取屏幕尺寸[Width],然后获取文本视图1宽度
int maxWidth = ScreenWidthSize - WidthOfTextView1;
textView2.setMaxWidth(maxWidth);
或者,如果您希望在dp中为每个文件自定义宽度,则在XML中:
android:maxWidth="200dp"
硬编码。动态为TextView2指定最大宽度属性,它应该是: 首先获取屏幕尺寸[Width],然后获取文本视图1宽度
int maxWidth = ScreenWidthSize - WidthOfTextView1;
textView2.setMaxWidth(maxWidth);
或者,如果您希望在dp中为每个文件自定义宽度,则在XML中:
android:maxWidth="200dp"
每个都硬编码。android:layout\u Center水平=true@nobalG:这是一个线性布局,layout_centerHorizontal=true是一个relativeLayout属性。将红色文本视图的宽度更改为
0dp
,并将其layout_权重设置为1。@opiatefuch如果OP更改了布局,它会为他解决问题吗?这与布局无关,它与权重有关。迈克·M的答案是莱特@Mike M.将此添加为答案…:)安卓:水平布局=true@nobalG:这是一个线性布局,layout_centerHorizontal=true是一个relativeLayout属性。将红色文本视图的宽度更改为0dp
,并将其layout_weight
设置为1。@opiatefuch如果OP更改布局,它会为他解决问题吗?这与布局无关,这与重量有关。迈克·M的答案是莱特@Mike M.将此添加为答案…:)第二个文本视图的权重在哪里?您不需要为第二个文本视图添加权重。测试代码,您将看到它是否有效。第二个文本视图的权重在哪里?您不需要为第二个文本视图添加权重。测试代码,您将看到它是否有效。