とりあえずメイン画面の表示だけタブレット対応した
This commit is contained in:
parent
d4899af01d
commit
af2fade576
File diff suppressed because it is too large
Load Diff
|
@ -714,6 +714,11 @@ class Column implements StreamReader.Callback {
|
|||
if( holder != null ) holder.showColumnHeader();
|
||||
}
|
||||
};
|
||||
private final Runnable proc_showColumnColor = new Runnable() {
|
||||
@Override public void run(){
|
||||
if( holder != null ) holder.showColumnColor();
|
||||
}
|
||||
};
|
||||
|
||||
void fireShowContent(){
|
||||
Utils.runOnMainThread( proc_showContent );
|
||||
|
@ -724,6 +729,11 @@ class Column implements StreamReader.Callback {
|
|||
Utils.runOnMainThread( proc_showColumnHeader );
|
||||
}
|
||||
|
||||
void fireColumnColor(){
|
||||
Utils.runOnMainThread( proc_showColumnColor );
|
||||
}
|
||||
|
||||
|
||||
private AsyncTask< Void, Void, TootApiResult > last_task;
|
||||
|
||||
private void cancelLastTask(){
|
||||
|
|
|
@ -37,46 +37,6 @@ class ColumnPagerAdapter extends PagerAdapter {
|
|||
return holder_list.get( idx );
|
||||
}
|
||||
|
||||
int addColumn( ViewPager pager, Column column ){
|
||||
return addColumn( pager, column, pager.getCurrentItem() + 1 );
|
||||
}
|
||||
|
||||
int addColumn( ViewPager pager, Column column, int index ){
|
||||
int size = column_list.size();
|
||||
if( index > size ) index = size;
|
||||
pager.setAdapter( null );
|
||||
column_list.add( index, column );
|
||||
pager.setAdapter( this );
|
||||
return index;
|
||||
}
|
||||
|
||||
void removeColumn( ViewPager pager, Column column ){
|
||||
int idx_column = column_list.indexOf( column );
|
||||
if( idx_column == - 1 ) return;
|
||||
pager.setAdapter( null );
|
||||
column_list.remove( idx_column ).dispose();
|
||||
pager.setAdapter( this );
|
||||
}
|
||||
|
||||
void setOrder( ViewPager pager, ArrayList< Integer > order ){
|
||||
pager.setAdapter( null );
|
||||
|
||||
ArrayList< Column > tmp_list = new ArrayList<>();
|
||||
HashSet< Integer > used_set = new HashSet<>();
|
||||
|
||||
for( Integer i : order ){
|
||||
used_set.add( i );
|
||||
tmp_list.add( column_list.get( i ) );
|
||||
}
|
||||
for( int i = 0, ie = column_list.size() ; i < ie ; ++ i ){
|
||||
if( used_set.contains( i ) ) continue;
|
||||
column_list.get( i ).dispose();
|
||||
}
|
||||
column_list.clear();
|
||||
column_list.addAll( tmp_list );
|
||||
|
||||
pager.setAdapter( this );
|
||||
}
|
||||
|
||||
@Override public CharSequence getPageTitle( int page_idx ){
|
||||
return getColumn( page_idx).getColumnName( false );
|
||||
|
@ -108,7 +68,7 @@ class ColumnPagerAdapter extends PagerAdapter {
|
|||
ColumnViewHolder holder = holder_list.get( page_idx );
|
||||
holder_list.remove( page_idx );
|
||||
if( holder != null ){
|
||||
holder.is_destroyed.set( true );
|
||||
|
||||
holder.onPageDestroy( view );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,6 +54,7 @@ class ColumnViewHolder
|
|||
|
||||
void onPageDestroy( @SuppressWarnings("UnusedParameters") View root ){
|
||||
log.d( "onPageDestroy:%s", column.getColumnName( true ) );
|
||||
is_destroyed.set( true );
|
||||
|
||||
saveScrollPosition();
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ class DlgContextMenu implements View.OnClickListener, View.OnLongClickListener {
|
|||
@NonNull private final TootAccount who;
|
||||
@Nullable private final TootStatus status;
|
||||
@NonNull private final UserRelation relation;
|
||||
@NonNull private final Column column;
|
||||
|
||||
private final Dialog dialog;
|
||||
|
||||
|
@ -41,15 +42,16 @@ class DlgContextMenu implements View.OnClickListener, View.OnLongClickListener {
|
|||
|
||||
DlgContextMenu(
|
||||
@NonNull ActMain activity
|
||||
, @NonNull SavedAccount access_info
|
||||
, @NonNull Column column
|
||||
, @NonNull TootAccount who
|
||||
, @Nullable TootStatus status
|
||||
, int column_type
|
||||
){
|
||||
this.activity = activity;
|
||||
this.access_info = access_info;
|
||||
this.column = column;
|
||||
this.access_info = column.access_info;
|
||||
this.who = who;
|
||||
this.status = status;
|
||||
int column_type = column.column_type;
|
||||
|
||||
this.relation = UserRelation.load( access_info.db_id, who.id );
|
||||
|
||||
|
@ -235,11 +237,13 @@ class DlgContextMenu implements View.OnClickListener, View.OnLongClickListener {
|
|||
|
||||
dialog.dismiss();
|
||||
|
||||
int pos = activity.nextPosition( column ) ;
|
||||
|
||||
switch( v.getId() ){
|
||||
|
||||
case R.id.btnStatusWebPage:
|
||||
if( status != null ){
|
||||
activity.openChromeTab( access_info, status.url, true );
|
||||
activity.openChromeTab(pos,access_info, status.url, true );
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -318,13 +322,13 @@ class DlgContextMenu implements View.OnClickListener, View.OnLongClickListener {
|
|||
|
||||
case R.id.btnBoostedBy:
|
||||
if( status != null ){
|
||||
activity.addColumn( access_info, Column.TYPE_BOOSTED_BY, status.id );
|
||||
activity.addColumn( pos,access_info, Column.TYPE_BOOSTED_BY, status.id );
|
||||
}
|
||||
break;
|
||||
|
||||
case R.id.btnFavouritedBy:
|
||||
if( status != null ){
|
||||
activity.addColumn( access_info, Column.TYPE_FAVOURITED_BY, status.id );
|
||||
activity.addColumn( pos,access_info, Column.TYPE_FAVOURITED_BY, status.id );
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -371,7 +375,7 @@ class DlgContextMenu implements View.OnClickListener, View.OnLongClickListener {
|
|||
break;
|
||||
|
||||
case R.id.btnProfile:
|
||||
activity.performOpenUser( access_info, who );
|
||||
activity.performOpenUser( pos,access_info, who );
|
||||
break;
|
||||
|
||||
case R.id.btnSendMessage:
|
||||
|
@ -379,7 +383,7 @@ class DlgContextMenu implements View.OnClickListener, View.OnLongClickListener {
|
|||
break;
|
||||
|
||||
case R.id.btnAccountWebPage:
|
||||
activity.openChromeTab( access_info, who.url, true );
|
||||
activity.openChromeTab( pos, access_info, who.url, true );
|
||||
break;
|
||||
|
||||
case R.id.btnFollowRequestOK:
|
||||
|
@ -399,7 +403,7 @@ class DlgContextMenu implements View.OnClickListener, View.OnLongClickListener {
|
|||
break;
|
||||
|
||||
case R.id.btnOpenProfileFromAnotherAccount:
|
||||
activity.performOpenUserFromAnotherAccount( who, account_list_non_pseudo_same_instance );
|
||||
activity.performOpenUserFromAnotherAccount( pos,who, account_list_non_pseudo_same_instance );
|
||||
break;
|
||||
|
||||
case R.id.btnNickname:
|
||||
|
|
|
@ -17,7 +17,7 @@ import jp.juggler.subwaytooter.view.MyLinkMovementMethod;
|
|||
import jp.juggler.subwaytooter.view.MyNetworkImageView;
|
||||
|
||||
class HeaderViewHolder implements View.OnClickListener, View.OnLongClickListener {
|
||||
private final Column column;
|
||||
final Column column;
|
||||
private final ActMain activity;
|
||||
private final SavedAccount access_info;
|
||||
|
||||
|
@ -106,12 +106,13 @@ class HeaderViewHolder implements View.OnClickListener, View.OnLongClickListener
|
|||
|
||||
@Override
|
||||
public void onClick( View v ){
|
||||
|
||||
switch( v.getId() ){
|
||||
|
||||
case R.id.ivBackground:
|
||||
if( who != null ){
|
||||
// 強制的にブラウザで開く
|
||||
activity.openChromeTab( access_info, who.url, true );
|
||||
activity.openChromeTab( activity.nextPosition( column ), access_info, who.url, true );
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -135,13 +136,13 @@ class HeaderViewHolder implements View.OnClickListener, View.OnLongClickListener
|
|||
|
||||
case R.id.btnMore:
|
||||
if( who != null ){
|
||||
new DlgContextMenu( activity, access_info, who, null, column.column_type ).show();
|
||||
new DlgContextMenu( activity, column, who, null ).show();
|
||||
}
|
||||
break;
|
||||
|
||||
case R.id.btnFollow:
|
||||
if( who != null ){
|
||||
new DlgContextMenu( activity, access_info, who, null, column.column_type ).show();
|
||||
new DlgContextMenu( activity, column, who, null ).show();
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -385,6 +385,9 @@ class ItemViewHolder implements View.OnClickListener, View.OnLongClickListener {
|
|||
}
|
||||
|
||||
@Override public void onClick( View v ){
|
||||
|
||||
int pos = activity.nextPosition( column ) ;
|
||||
|
||||
switch( v.getId() ){
|
||||
case R.id.btnHideMedia:
|
||||
MediaShown.save( access_info.host, status.id, false );
|
||||
|
@ -415,33 +418,33 @@ class ItemViewHolder implements View.OnClickListener, View.OnLongClickListener {
|
|||
|
||||
case R.id.ivThumbnail:
|
||||
if( access_info.isPseudo() ){
|
||||
new DlgContextMenu( activity, access_info, account_thumbnail, null, column.column_type ).show();
|
||||
new DlgContextMenu( activity, column, account_thumbnail, null ).show();
|
||||
}else{
|
||||
activity.performOpenUser( access_info, account_thumbnail );
|
||||
activity.performOpenUser( pos,access_info, account_thumbnail );
|
||||
}
|
||||
break;
|
||||
|
||||
case R.id.llBoosted:
|
||||
if( access_info.isPseudo() ){
|
||||
new DlgContextMenu( activity, access_info, account_boost, null, column.column_type ).show();
|
||||
new DlgContextMenu( activity, column, account_boost, null ).show();
|
||||
}else{
|
||||
activity.performOpenUser( access_info, account_boost );
|
||||
activity.performOpenUser( pos,access_info, account_boost );
|
||||
}
|
||||
break;
|
||||
case R.id.llFollow:
|
||||
if( access_info.isPseudo() ){
|
||||
new DlgContextMenu( activity, access_info, account_follow, null, column.column_type ).show();
|
||||
new DlgContextMenu( activity, column, account_follow, null ).show();
|
||||
}else{
|
||||
activity.performOpenUser( access_info, account_follow );
|
||||
activity.performOpenUser( pos,access_info, account_follow );
|
||||
}
|
||||
break;
|
||||
case R.id.btnFollow:
|
||||
new DlgContextMenu( activity, access_info, account_follow, null, column.column_type ).show();
|
||||
new DlgContextMenu( activity, column, account_follow, null ).show();
|
||||
break;
|
||||
|
||||
case R.id.btnSearchTag:
|
||||
if( search_tag != null ){
|
||||
activity.openHashTag( access_info, search_tag );
|
||||
activity.openHashTag( pos,access_info, search_tag );
|
||||
}else if( gap != null ){
|
||||
column.startGap( gap, position );
|
||||
}
|
||||
|
@ -453,7 +456,7 @@ class ItemViewHolder implements View.OnClickListener, View.OnLongClickListener {
|
|||
switch( v.getId() ){
|
||||
|
||||
case R.id.ivThumbnail:
|
||||
new DlgContextMenu( activity, access_info, account_thumbnail, null, column.column_type ).show();
|
||||
new DlgContextMenu( activity, column, account_thumbnail, null ).show();
|
||||
return true;
|
||||
|
||||
case R.id.btnFollow:
|
||||
|
@ -481,7 +484,8 @@ class ItemViewHolder implements View.OnClickListener, View.OnLongClickListener {
|
|||
sv = a.url;
|
||||
}
|
||||
}
|
||||
activity.openChromeTab( access_info, sv, false );
|
||||
int pos = activity.nextPosition( column ) ;
|
||||
activity.openChromeTab(pos, access_info, sv, false );
|
||||
}catch( Throwable ex ){
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
|
|
@ -113,7 +113,7 @@ class StatusButtons implements View.OnClickListener, View.OnLongClickListener {
|
|||
if( close_window != null ) close_window.dismiss();
|
||||
switch( v.getId() ){
|
||||
case R.id.btnConversation:
|
||||
activity.openStatus( access_info, status );
|
||||
activity.openStatus( activity.nextPosition( column ), access_info, status );
|
||||
break;
|
||||
case R.id.btnReply:
|
||||
if( access_info.isPseudo() ){
|
||||
|
@ -152,7 +152,7 @@ class StatusButtons implements View.OnClickListener, View.OnLongClickListener {
|
|||
break;
|
||||
|
||||
case R.id.btnMore:
|
||||
new DlgContextMenu( activity, access_info, status.account, status, column.column_type ).show();
|
||||
new DlgContextMenu( activity, column, status.account, status ).show();
|
||||
break;
|
||||
|
||||
case R.id.btnFollow2:
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
package jp.juggler.subwaytooter;
|
||||
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
class TabletColumnPagerAdapter extends RecyclerView.Adapter<TabletColumnViewHolder >{
|
||||
|
||||
private final ActMain activity;
|
||||
private final LayoutInflater mLayoutInflater;
|
||||
private final List<Column> column_list;
|
||||
|
||||
TabletColumnPagerAdapter( ActMain activity ){
|
||||
super();
|
||||
this.activity = activity;
|
||||
this.column_list = activity.app_state.column_list;
|
||||
mLayoutInflater = LayoutInflater.from( activity );
|
||||
}
|
||||
|
||||
@Override public int getItemCount(){
|
||||
return column_list.size();
|
||||
}
|
||||
|
||||
private int mColumnWidth = 0;
|
||||
|
||||
void setColumnWidth( int width ){
|
||||
mColumnWidth = width;
|
||||
}
|
||||
|
||||
@Override public TabletColumnViewHolder onCreateViewHolder( ViewGroup parent, int viewType ){
|
||||
View v = mLayoutInflater.inflate( R.layout.page_column, parent, false );
|
||||
|
||||
return new TabletColumnViewHolder( v );
|
||||
}
|
||||
|
||||
@Override public void onBindViewHolder( TabletColumnViewHolder holder, int position ){
|
||||
|
||||
if( mColumnWidth > 0 ){
|
||||
ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams();
|
||||
lp.width = mColumnWidth;
|
||||
holder.itemView.setLayoutParams( lp );
|
||||
}
|
||||
|
||||
holder.bind( activity, column_list.get(position), position , column_list.size() );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
package jp.juggler.subwaytooter;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
|
||||
import jp.juggler.subwaytooter.util.LogCategory;
|
||||
|
||||
class TabletColumnViewHolder extends RecyclerView.ViewHolder{
|
||||
static final LogCategory log = new LogCategory( "TabletColumnViewHolder" );
|
||||
|
||||
|
||||
ColumnViewHolder vh;
|
||||
private int old_position;
|
||||
|
||||
TabletColumnViewHolder( View v ){
|
||||
super( v );
|
||||
|
||||
v.findViewById( R.id.vTabletDivider ).setVisibility( View.VISIBLE );
|
||||
}
|
||||
|
||||
void bind( ActMain activity, Column column,int position,int column_count ){
|
||||
if( vh != null ){
|
||||
log.d("destroy #%s",old_position);
|
||||
vh.onPageDestroy( itemView );
|
||||
vh = null;
|
||||
}
|
||||
|
||||
old_position = position;
|
||||
log.d("create #%s",position);
|
||||
vh =new ColumnViewHolder( activity, column);
|
||||
vh.onPageCreate( itemView,position,column_count );
|
||||
|
||||
if( ! column.bFirstInitialized ){
|
||||
column.startLoading();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,7 +9,7 @@ import jp.juggler.subwaytooter.table.AcctColor;
|
|||
public class MyClickableSpan extends ClickableSpan {
|
||||
|
||||
public interface LinkClickCallback {
|
||||
void onClickLink( LinkClickContext account, String url );
|
||||
void onClickLink( View widget,LinkClickContext account, String url );
|
||||
}
|
||||
|
||||
public static LinkClickCallback link_callback;
|
||||
|
@ -30,7 +30,7 @@ public class MyClickableSpan extends ClickableSpan {
|
|||
|
||||
@Override public void onClick( View widget ){
|
||||
if( link_callback != null ){
|
||||
link_callback.onClickLink( this.account, url );
|
||||
link_callback.onClickLink( widget,this.account, url );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,174 @@
|
|||
package jp.juggler.subwaytooter.view;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.LinearSnapHelper;
|
||||
import android.support.v7.widget.OrientationHelper;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
|
||||
/**
|
||||
* Created by tateisu on 2017/05/12.
|
||||
*/
|
||||
|
||||
public class GravitySnapHelper extends LinearSnapHelper {
|
||||
|
||||
private OrientationHelper verticalHelper;
|
||||
private OrientationHelper horizontalHelper;
|
||||
private int gravity;
|
||||
private boolean isRTL;
|
||||
|
||||
@SuppressLint("RtlHardcoded")
|
||||
public GravitySnapHelper(int gravity) {
|
||||
this.gravity = gravity;
|
||||
if (this.gravity == Gravity.LEFT) {
|
||||
this.gravity = Gravity.START;
|
||||
} else if (this.gravity == Gravity.RIGHT) {
|
||||
this.gravity = Gravity.END;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attachToRecyclerView(@Nullable RecyclerView recyclerView)
|
||||
throws IllegalStateException {
|
||||
if (recyclerView != null) {
|
||||
isRTL = ViewCompat.getLayoutDirection(recyclerView) == ViewCompat.LAYOUT_DIRECTION_RTL;
|
||||
}
|
||||
super.attachToRecyclerView(recyclerView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] calculateDistanceToFinalSnap(
|
||||
@NonNull RecyclerView.LayoutManager layoutManager
|
||||
,@NonNull View targetView
|
||||
) {
|
||||
int[] out = new int[2];
|
||||
|
||||
if (layoutManager.canScrollHorizontally()) {
|
||||
if (gravity == Gravity.START) {
|
||||
out[0] = distanceToStart(targetView, getHorizontalHelper(layoutManager));
|
||||
} else { // END
|
||||
out[0] = distanceToEnd(targetView, getHorizontalHelper(layoutManager));
|
||||
}
|
||||
} else {
|
||||
out[0] = 0;
|
||||
}
|
||||
|
||||
if (layoutManager.canScrollVertically()) {
|
||||
if (gravity == Gravity.TOP) {
|
||||
out[1] = distanceToStart(targetView, getVerticalHelper(layoutManager));
|
||||
} else { // BOTTOM
|
||||
out[1] = distanceToEnd(targetView, getVerticalHelper(layoutManager));
|
||||
}
|
||||
} else {
|
||||
out[1] = 0;
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View findSnapView(RecyclerView.LayoutManager layoutManager) {
|
||||
if (layoutManager instanceof LinearLayoutManager ) {
|
||||
switch (gravity) {
|
||||
case Gravity.START:
|
||||
return findStartView(layoutManager, getHorizontalHelper(layoutManager));
|
||||
case Gravity.TOP:
|
||||
return findStartView(layoutManager, getVerticalHelper(layoutManager));
|
||||
case Gravity.END:
|
||||
return findEndView(layoutManager, getHorizontalHelper(layoutManager));
|
||||
case Gravity.BOTTOM:
|
||||
return findEndView(layoutManager, getVerticalHelper(layoutManager));
|
||||
}
|
||||
}
|
||||
|
||||
return super.findSnapView(layoutManager);
|
||||
}
|
||||
|
||||
private int distanceToStart(View targetView, OrientationHelper helper) {
|
||||
if ( isRTL ) {
|
||||
return distanceToEnd(targetView, helper);
|
||||
}
|
||||
return helper.getDecoratedStart(targetView) - helper.getStartAfterPadding();
|
||||
}
|
||||
|
||||
private int distanceToEnd(View targetView, OrientationHelper helper) {
|
||||
if ( isRTL ) {
|
||||
return helper.getDecoratedStart(targetView) - helper.getStartAfterPadding();
|
||||
}
|
||||
return helper.getDecoratedEnd(targetView) - helper.getEndAfterPadding();
|
||||
}
|
||||
|
||||
private View findStartView(RecyclerView.LayoutManager layoutManager,
|
||||
OrientationHelper helper) {
|
||||
|
||||
if (layoutManager instanceof LinearLayoutManager) {
|
||||
int firstChild = ((LinearLayoutManager) layoutManager).findFirstVisibleItemPosition();
|
||||
|
||||
if (firstChild == RecyclerView.NO_POSITION) {
|
||||
return null;
|
||||
}
|
||||
|
||||
View child = layoutManager.findViewByPosition(firstChild);
|
||||
|
||||
if (helper.getDecoratedEnd(child) >= helper.getDecoratedMeasurement(child) / 2
|
||||
&& helper.getDecoratedEnd(child) > 0) {
|
||||
return child;
|
||||
} else {
|
||||
if (((LinearLayoutManager) layoutManager).findLastCompletelyVisibleItemPosition()
|
||||
== layoutManager.getItemCount() - 1) {
|
||||
return null;
|
||||
} else {
|
||||
return layoutManager.findViewByPosition(firstChild + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return super.findSnapView(layoutManager);
|
||||
}
|
||||
|
||||
private View findEndView(RecyclerView.LayoutManager layoutManager,
|
||||
OrientationHelper helper) {
|
||||
|
||||
if (layoutManager instanceof LinearLayoutManager) {
|
||||
int lastChild = ((LinearLayoutManager) layoutManager).findLastVisibleItemPosition();
|
||||
|
||||
if (lastChild == RecyclerView.NO_POSITION) {
|
||||
return null;
|
||||
}
|
||||
|
||||
View child = layoutManager.findViewByPosition(lastChild);
|
||||
|
||||
if (helper.getDecoratedStart(child) + helper.getDecoratedMeasurement(child) / 2
|
||||
<= helper.getTotalSpace()) {
|
||||
return child;
|
||||
} else {
|
||||
if (((LinearLayoutManager) layoutManager).findFirstCompletelyVisibleItemPosition()
|
||||
== 0) {
|
||||
return null;
|
||||
} else {
|
||||
return layoutManager.findViewByPosition(lastChild - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return super.findSnapView(layoutManager);
|
||||
}
|
||||
|
||||
private OrientationHelper getVerticalHelper(RecyclerView.LayoutManager layoutManager) {
|
||||
if (verticalHelper == null) {
|
||||
verticalHelper = OrientationHelper.createVerticalHelper(layoutManager);
|
||||
}
|
||||
return verticalHelper;
|
||||
}
|
||||
|
||||
private OrientationHelper getHorizontalHelper(RecyclerView.LayoutManager layoutManager) {
|
||||
if (horizontalHelper == null) {
|
||||
horizontalHelper = OrientationHelper.createHorizontalHelper(layoutManager);
|
||||
}
|
||||
return horizontalHelper;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,81 @@
|
|||
package jp.juggler.subwaytooter.view;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.view.MotionEventCompat;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.ViewConfiguration;
|
||||
|
||||
public class MyRecyclerView extends RecyclerView {
|
||||
|
||||
public MyRecyclerView( Context context ){
|
||||
super( context );
|
||||
init(context);
|
||||
}
|
||||
|
||||
|
||||
public MyRecyclerView( Context context, @Nullable AttributeSet attrs ){
|
||||
super( context, attrs );
|
||||
init(context);
|
||||
}
|
||||
|
||||
public MyRecyclerView( Context context, @Nullable AttributeSet attrs, int defStyle ){
|
||||
super( context, attrs, defStyle );
|
||||
init(context);
|
||||
|
||||
}
|
||||
|
||||
private void init( Context context ){
|
||||
final ViewConfiguration vc = ViewConfiguration.get(context);
|
||||
mTouchSlop = vc.getScaledTouchSlop();
|
||||
}
|
||||
|
||||
|
||||
boolean mForbidStartDragging;
|
||||
int mScrollPointerId;
|
||||
int mInitialTouchX;
|
||||
int mInitialTouchY;
|
||||
int mTouchSlop;
|
||||
|
||||
@Override
|
||||
public boolean onInterceptTouchEvent( MotionEvent e ){
|
||||
final int action = MotionEventCompat.getActionMasked( e );
|
||||
// final int actionIndex = MotionEventCompat.getActionIndex( e );
|
||||
|
||||
switch( action ){
|
||||
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
mForbidStartDragging = false;
|
||||
mScrollPointerId = e.getPointerId(0);
|
||||
mInitialTouchX = (int) (e.getX() + 0.5f);
|
||||
mInitialTouchY = (int) (e.getY() + 0.5f);
|
||||
|
||||
break;
|
||||
|
||||
case MotionEvent.ACTION_MOVE:
|
||||
final int index = e.findPointerIndex( mScrollPointerId );
|
||||
if( index >= 0 ){
|
||||
if( mForbidStartDragging ) return false;
|
||||
|
||||
final int x = (int) ( e.getX( index ) + 0.5f );
|
||||
final int y = (int) ( e.getY( index ) + 0.5f );
|
||||
boolean canScrollHorizontally = getLayoutManager().canScrollHorizontally();
|
||||
boolean canScrollVertically = getLayoutManager().canScrollVertically();
|
||||
|
||||
final int dx = x - mInitialTouchX;
|
||||
final int dy = y - mInitialTouchY;
|
||||
|
||||
if( ( ! canScrollVertically && Math.abs( dy ) > mTouchSlop )
|
||||
|| ( ! canScrollHorizontally && Math.abs( dx ) > mTouchSlop )
|
||||
){
|
||||
mForbidStartDragging = true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return super.onInterceptTouchEvent( e );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
//package jp.juggler.subwaytooter.view;
|
||||
//
|
||||
//import android.content.Context;
|
||||
//import android.content.res.TypedArray;
|
||||
//import android.graphics.Canvas;
|
||||
//import android.graphics.Paint;
|
||||
//import android.graphics.Rect;
|
||||
//import android.support.v7.widget.RecyclerView;
|
||||
//import android.view.View;
|
||||
//
|
||||
//import jp.juggler.subwaytooter.R;
|
||||
//import jp.juggler.subwaytooter.Styler;
|
||||
//
|
||||
//public class TabletColumnDivider extends RecyclerView.ItemDecoration {
|
||||
//
|
||||
// final Paint paint = new Paint();
|
||||
// int width;
|
||||
//
|
||||
// public TabletColumnDivider(Context context) {
|
||||
//
|
||||
// width = (int)(0.5f + 1f * context.getResources().getDisplayMetrics().density);
|
||||
// int color = Styler.getAttributeColor(context, R.attr.colorSettingDivider);
|
||||
//
|
||||
// paint.setColor( color );
|
||||
// }
|
||||
//
|
||||
// @Override public void onDraw( Canvas c, RecyclerView parent, RecyclerView.State state) {
|
||||
// drawDivider(c, parent);
|
||||
// }
|
||||
//
|
||||
// void drawDivider(Canvas c, RecyclerView parent) {
|
||||
// final int t = parent.getPaddingTop();
|
||||
// final int b = parent.getHeight() - parent.getPaddingBottom();
|
||||
//
|
||||
// final int childCount = parent.getChildCount();
|
||||
// for (int i = 0; i < childCount; i++) {
|
||||
// final View child = parent.getChildAt(i);
|
||||
// final int r = child.getRight();
|
||||
// final int l = r - width;
|
||||
// c.drawRect( l,t,r,b,paint );
|
||||
//
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void getItemOffsets( Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
|
||||
// outRect.set(width,0,width,0);
|
||||
// }
|
||||
//
|
||||
//}
|
|
@ -46,6 +46,10 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
/>
|
||||
<jp.juggler.subwaytooter.view.MyRecyclerView
|
||||
android:id="@+id/rvPager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
</FrameLayout>
|
||||
|
||||
<LinearLayout
|
||||
|
|
|
@ -1,130 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/llColumnHeader"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/btn_bg_ddd"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingTop="3dp"
|
||||
>
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/llColumnHeader"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="bottom"
|
||||
android:orientation="horizontal"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvColumnContext"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="end"
|
||||
android:paddingEnd="4dp"
|
||||
android:paddingStart="4dp"
|
||||
android:textColor="?attr/colorColumnHeaderAcct"
|
||||
android:textSize="12sp"
|
||||
tools:text="tvColumnContext"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvColumnIndex"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:gravity="end"
|
||||
android:textColor="?attr/colorColumnHeaderPageNumber"
|
||||
android:textSize="12sp"
|
||||
tools:text="col 6/12"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="0dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivColumnIcon"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:importantForAccessibility="no"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvColumnName"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
tools:text="tvColumnName"
|
||||
/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/btnColumnSetting"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="2dp"
|
||||
android:background="@drawable/btn_bg_transparent"
|
||||
android:contentDescription="@string/setting"
|
||||
android:src="?attr/ic_tune"
|
||||
/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/btnColumnReload"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="2dp"
|
||||
android:background="@drawable/btn_bg_transparent"
|
||||
android:contentDescription="@string/reload"
|
||||
android:src="?attr/btn_refresh"
|
||||
/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/btnColumnClose"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="2dp"
|
||||
android:background="@drawable/btn_bg_transparent"
|
||||
android:contentDescription="@string/close_column"
|
||||
android:src="?attr/btn_close"
|
||||
/>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<jp.juggler.subwaytooter.view.MaxHeightScrollView
|
||||
android:id="@+id/llColumnSetting"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:maxHeight="240dp"
|
||||
android:fadeScrollbars="false"
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/colorColumnSettingBackground"
|
||||
android:background="@drawable/btn_bg_ddd"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingEnd="12dp"
|
||||
|
@ -132,190 +24,315 @@
|
|||
android:paddingTop="3dp"
|
||||
>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbDontCloseColumn"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dont_close_column"
|
||||
/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbWithAttachment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/with_attachment"
|
||||
/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbDontShowBoost"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dont_show_boost"
|
||||
/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbDontShowReply"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dont_show_reply"
|
||||
/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbDontStreaming"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dont_use_streaming_api"
|
||||
/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbDontAutoRefresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dont_refresh_on_activity_resume"
|
||||
/>
|
||||
<CheckBox
|
||||
android:id="@+id/cbHideMediaDefault"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/hide_media_default"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:id="@+id/llRegexFilter"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="bottom"
|
||||
android:orientation="horizontal"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:id="@+id/tvColumnContext"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:labelFor="@+id/etRegexFilter"
|
||||
android:text="@string/regex_filter"
|
||||
android:textColor="?attr/colorColumnHeaderPageNumber"
|
||||
android:layout_weight="1"
|
||||
android:gravity="end"
|
||||
android:paddingEnd="4dp"
|
||||
android:paddingStart="4dp"
|
||||
android:textColor="?attr/colorColumnHeaderAcct"
|
||||
android:textSize="12sp"
|
||||
tools:text="tvColumnContext"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvRegexFilterError"
|
||||
android:id="@+id/tvColumnIndex"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:gravity="end"
|
||||
android:textColor="?attr/colorColumnHeaderPageNumber"
|
||||
android:textSize="12sp"
|
||||
tools:text="col 6/12"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="0dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivColumnIcon"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:importantForAccessibility="no"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvColumnName"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_weight="1"
|
||||
android:textColor="?attr/colorRegexFilterError"
|
||||
tools:text="tvColumnName"
|
||||
/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/btnColumnSetting"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="2dp"
|
||||
android:background="@drawable/btn_bg_transparent"
|
||||
android:contentDescription="@string/setting"
|
||||
android:src="?attr/ic_tune"
|
||||
/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/btnColumnReload"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="2dp"
|
||||
android:background="@drawable/btn_bg_transparent"
|
||||
android:contentDescription="@string/reload"
|
||||
android:src="?attr/btn_refresh"
|
||||
/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/btnColumnClose"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginStart="2dp"
|
||||
android:background="@drawable/btn_bg_transparent"
|
||||
android:contentDescription="@string/close_column"
|
||||
android:src="?attr/btn_close"
|
||||
/>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/etRegexFilter"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text"
|
||||
android:maxLines="1"
|
||||
android:scrollHorizontally="true"
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnDeleteNotification"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/notification_delete"
|
||||
android:textAllCaps="false"
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnColor"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/color_and_background"
|
||||
android:textAllCaps="false"
|
||||
/>
|
||||
</LinearLayout>
|
||||
</jp.juggler.subwaytooter.view.MaxHeightScrollView>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/llSearch"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/colorSearchFormBackground"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingTop="3dp"
|
||||
>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/btnSearch"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:background="@drawable/btn_bg_transparent"
|
||||
android:contentDescription="@string/search"
|
||||
android:src="?attr/ic_search"
|
||||
/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/etSearch"
|
||||
<jp.juggler.subwaytooter.view.MaxHeightScrollView
|
||||
android:id="@+id/llColumnSetting"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toStartOf="@id/btnSearch"
|
||||
android:imeOptions="actionSearch"
|
||||
android:inputType="text"
|
||||
tools:ignore="LabelFor"/>
|
||||
android:fadeScrollbars="false"
|
||||
app:maxHeight="240dp"
|
||||
>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbResolve"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/etSearch"
|
||||
android:text="@string/resolve_non_local_account"
|
||||
/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/flColumnBackground"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivColumnBackgroundImage"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLoading"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
/>
|
||||
|
||||
<com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayout
|
||||
android:id="@+id/swipyRefreshLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:srl_direction="both">
|
||||
|
||||
<jp.juggler.subwaytooter.view.MyListView
|
||||
android:id="@+id/listView"
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
android:clipToPadding="false"
|
||||
android:divider="?attr/colorSettingDivider"
|
||||
android:dividerHeight="1dp"
|
||||
android:fadeScrollbars="false"
|
||||
android:fastScrollEnabled="true"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/colorColumnSettingBackground"
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:paddingStart="12dp"
|
||||
android:scrollbarStyle="outsideOverlay"
|
||||
android:paddingTop="3dp"
|
||||
>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbDontCloseColumn"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dont_close_column"
|
||||
/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbWithAttachment"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/with_attachment"
|
||||
/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbDontShowBoost"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dont_show_boost"
|
||||
/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbDontShowReply"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dont_show_reply"
|
||||
/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbDontStreaming"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dont_use_streaming_api"
|
||||
/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbDontAutoRefresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/dont_refresh_on_activity_resume"
|
||||
/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbHideMediaDefault"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/hide_media_default"
|
||||
/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/llRegexFilter"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:labelFor="@+id/etRegexFilter"
|
||||
android:text="@string/regex_filter"
|
||||
android:textColor="?attr/colorColumnHeaderPageNumber"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvRegexFilterError"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
android:layout_weight="1"
|
||||
android:textColor="?attr/colorRegexFilterError"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/etRegexFilter"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text"
|
||||
android:maxLines="1"
|
||||
android:scrollHorizontally="true"
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnDeleteNotification"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/notification_delete"
|
||||
android:textAllCaps="false"
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnColor"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/color_and_background"
|
||||
android:textAllCaps="false"
|
||||
/>
|
||||
</LinearLayout>
|
||||
</jp.juggler.subwaytooter.view.MaxHeightScrollView>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/llSearch"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/colorSearchFormBackground"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingTop="3dp"
|
||||
>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/btnSearch"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:background="@drawable/btn_bg_transparent"
|
||||
android:contentDescription="@string/search"
|
||||
android:src="?attr/ic_search"
|
||||
/>
|
||||
|
||||
</com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayout>
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
<EditText
|
||||
android:id="@+id/etSearch"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toStartOf="@id/btnSearch"
|
||||
android:imeOptions="actionSearch"
|
||||
android:inputType="text"
|
||||
tools:ignore="LabelFor"/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbResolve"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/etSearch"
|
||||
android:text="@string/resolve_non_local_account"
|
||||
/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/flColumnBackground"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivColumnBackgroundImage"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvLoading"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
/>
|
||||
|
||||
<com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayout
|
||||
android:id="@+id/swipyRefreshLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:srl_direction="both">
|
||||
|
||||
<jp.juggler.subwaytooter.view.MyListView
|
||||
android:id="@+id/listView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
android:clipToPadding="false"
|
||||
android:divider="?attr/colorSettingDivider"
|
||||
android:dividerHeight="1dp"
|
||||
android:fadeScrollbars="false"
|
||||
android:fastScrollEnabled="true"
|
||||
android:paddingEnd="12dp"
|
||||
android:paddingStart="12dp"
|
||||
android:scrollbarStyle="outsideOverlay"
|
||||
/>
|
||||
|
||||
</com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayout>
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:id="@+id/vTabletDivider"
|
||||
android:layout_width="1dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="end"
|
||||
android:background="?attr/colorSettingDivider"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
</FrameLayout>
|
Loading…
Reference in New Issue