2016-12-11 7 views
1

У меня этот пользовательский макет в моей панели приложений. Моя проблема заключается в том, что не только текст не отображается полностью, но и он остается слева, а не справа. Я установил все атрибуты gravity, direction layout_gravity вправо и rtl как в коде, так и в файлах layout.xml. Но успеха нет.Textview внутри пользовательского макета ActionBar не идет rtl

Вот скриншот: (как можно видеть только "правильную" часть текста "Если придерживаться правой" внутри TextView показано.)

enter image description here

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="center_vertical|right" 
android:background="@color/black1" 
android:gravity="right|center_vertical" 
android:layoutDirection="rtl" 
android:orientation="horizontal"> 

<ImageView 
    android:id="@+id/search_mag_icon" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@color/blue4main" 
    android:src="@drawable/abc_ic_search_api_mtrl_alpha" /> 

<com.jahanjooy.haftdong.views.DelayAutoCompleteTextView 
    android:id="@+id/text_view_vicinity" 
    android:layout_width="150dp" 
    android:layout_height="wrap_content" 
    android:background="@color/black1" 
    android:gravity="right" 
    android:imeOptions="flagNoExtractUi|actionSearch" 
    android:inputType="textCapSentences" 
    android:layoutDirection="rtl" 
    android:shadowColor="@color/white1" 
    android:textColor="@android:color/white" /> 


<TextView 
    android:id="@+id/text_view_hint" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 


    android:layout_gravity="center_vertical|right" 
    android:background="@color/blue1" 
    android:gravity="right" 
    android:layoutDirection="rtl" 
    android:text="should go right" 
    android:textColor="@color/white1" 
    android:textSize="15dp" /> 

<ProgressBar 
    android:id="@+id/progress_bar" 
    style="?android:attr/progressBarStyleSmall" 
    android:layout_width="20dp" 
    android:layout_height="20dp" 
    android:indeterminate="true" 
    android:indeterminateTint="@android:color/white" 
    android:indeterminateTintMode="src_atop" 
    android:visibility="gone" /> 

<ImageView 
    android:id="@+id/ic_filter_cone" 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:src="@drawable/ic_filter" /> 

активность:

/**/ 
    /**/ 
    Toolbar parent =(Toolbar) layout.getParent();//first get parent toolbar of current action bar 
    parent.setContentInsetsAbsolute(100,10); 


    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 

    ActionBar.LayoutParams lp = (ActionBar.LayoutParams) layout.getLayoutParams(); 
    lp.rightMargin= 0; 
    lp.width = metrics.widthPixels/2; 
    lp.gravity = Gravity.RIGHT; 
    layout.setLayoutParams(lp); 
    layout.setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 

    TextView hint = (TextView) findViewById(R.id.text_view_hint); 
    LinearLayout.LayoutParams ll= (LinearLayout.LayoutParams) hint.getLayoutParams(); 
    ll.rightMargin = 0; 
    ll.width = metrics.widthPixels/2; 
    ll.gravity = Gravity.RIGHT; 
    hint.setLayoutParams(ll); 
    hint.setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 
    hint.setTextDirection(View.TEXT_DIRECTION_RTL); 

     /**/ 

ответ

0
android:shadowColor="@color/white1" 
    android:textColor="@android:color/white" /> 

<TextView 
    android:id="@+id/text_view_hint" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical|right" 
    android:background="@color/blue1" 
    android:gravity="right" 
    android:layoutDirection="rtl" 
    android:text="should go right" 
    android:textColor="@color/white1" 
    android:textSize="15dp" /> 

<ProgressBar 
    android:id="@+id/progress_bar" 
    style="?android:attr/progressBarStyleSmall" 

Заменить TextView с RelativeLayout и поставить TextView в it.As показано ниже

<RelativeLayout 
    android:layout_width="100dp" 
    android:layout_height="wrap_content" 
    android:background="@color/blue1"> 

<TextView 
    android:id="@+id/text_view_hint" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="should go right" 
    android:textColor="@color/white1" 
    android:textSize="15dp" 
    android:layout_alignParentRight="true"/> 

</RelativeLayout> 

дать требуемую ширину, чтобы RelativeLayout, чтобы wrap_contentTextView. Установите TextView фон на RelativeLayout. Добавить

android:layout_alignParentRight="true" 

будет двигаться TextView направо side.And удалены другие атрибуты силы тяжести.